我發現我的非常基本的小寫字符串代碼有時會輸出一個額外的字符。如果我運行的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
它用零終止字符串是很好的。否則,我真的很驚訝,你只有一個字母更多印刷:) –