我发现我的非常基本的小写字符串代码有时会输出一个额外的字符。如果我运行的V @ genere有一些投入,它工作正常:“Vigenere”:String lowercasing program is appending character for some inputs
~/workspace/pset2/vigenere/ $ ./vigenere tweedDLed
tweeddled
但对于其他投入,它插入在最后一个多余的字符:
~/workspace/pset2/vigenere/ $ ./vigenere tweedDLedf
tweeddledfB
或...
~/workspace/pset2/vigenere/ $ ./vigenere bkls33bf
bkls33bfW
这是怎么回事?由于不显示字符数组,因此我没有找到任何与调试器相关的信息。这是我的代码:
#include <ctype.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <cs50.h>
int main(int argc, string argv[]){
if (argc!=2){
return 1;
}
else{
int n = strlen(argv[1]);
char cipherKey[n];
for (int i=0;i<n;i++){
cipherKey[i]=tolower(argv[1][i]);
}
printf("%s\n",cipherKey);
}
}
'的printf( “%S \ n”,密码索引)'>'printf的;' – BLUEPIXY
它用零终止字符串是很好的。否则,我真的很惊讶,你只有一个字母更多印刷:) –