-2
我已经在此工作了一段时间,但我不断收到{0,0,0,0,0}或{2751685,2751685等}或{57,58,59,60,等}字符串到int数组
void getGuess(int guess[], int length) {
char thisGuess[length];
int i=0;
printf("Enter your guess.\n");
scanf("%s", &thisGuess);
for(i=0; i<length; i++) {
printf("the guess = %d\n",(int)thisGuess[i]) ;
guess[i] = (int)(thisGuess)-48;
printf("%d ", guess[i]);
}
}
我想输入一个字符串,12345,并得到这么
guess[0] = 1
guess[1] = 2
guess[2] = 3
etc
在我的代码的建议吗?
我怀疑'48'是用来从数字'0'转换为整数值'0'。如果这是正确的:**不要**使用魔术数字!你混淆了你的代码。只需使用_character整数常量_“0”即可。 – Olaf
使用你在for循环中用scanf得到的字符串的实际长度,而不是你的长度参数... – Unimportant
'(int)(thisGuess) - 48'应该是'thisGuess [i] - 48'(或者最好是'' 0'而不是'48')。你也应该停止在刚刚发生的输入(不是'length')的末尾进行循环,并且如果输入长度超过'length',你需要一些方法来防止缓冲区溢出。 –