我在给定的代码中遇到了一个问题,即输入(2 X++ X++)
会产生输出(2 0)
,或者任何输入都会产生(n 0)
而不是(n n)
. 谁能解释这种行为的原因?
#include <stdio.h>
int main()
{
int n;
scanf("%d", &n);
int number = 0;
for (int i = 0; i < n; i++)
{
char operation[3];
printf("%d\n", n);
scanf("%s", operation);
printf("%d\n", n);
if (operation[0] == '+' || operation[2] == '+')
number++;
else
number--;
}
return 0;
}
operation
定义为 3 个字符长 - 即两个“数据”字符加上空终止符。您将一个长度为三个“数据”字符的字符串读入其中,但您忘记了空终止符。
也就是说,你的记忆可能是这样的:
+---+---+---+---+
| | | | 2 |
+---+---+---+---+
<-operation-> n
然后你用它的空终止符读入“X++”,你的记忆读到:
+---+---+---+---+
| X | + | + | \0|
+---+---+---+---+
<-operation-> n
最后'\0'
需要在分配的空间中考虑operation
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句