这是我的代码
int i;
char new[SIZE_OF_ARRAY];
printf("Which line would you like to replace?\n");
scanf("%d", &i);
if(i >= row)
{
printf("ROW SIZE CROSSED....RETURNNG BACK TO MAIN MENU");
return;
}
else
{
printf("What would you like to be replace?\n");
scanf("%[^\n]", new);
strcpy(array[i],new);
}
return;
但是当我运行它时,scanf无法正常工作。它只是跳过任务......代码出了什么问题?
答案 0 :(得分:0)
很可能是因为在scanf("%d", &i);
之后输入缓冲区中有换行符,所以当你尝试使用scanf("%[^\n]", new);
获取某些东西时因为换行符而没有读取任何内容。
要验证它,请打印第二个scanf
的返回值以查看。
解决方案:只需使用fgets
执行第二次scanf
工作,或在第二次scanf
之前使用换行符,例如将第一个scanf
更改为scanf("%d\n", &i);
答案 1 :(得分:0)
scanf("%[^ \ n]",new);
的strcpy(阵列[I],新);
---我在第二个参数中从未见过使用新关键字。你确定这是你想要的吗?