这是我的代码
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 不起作用。它只是跳过任务...代码有什么问题?
最佳答案
很可能是因为 scanf("%d", &i);
之后输入缓冲区中有一个换行符,所以当您尝试使用 scanf("获取某些内容时%[^\n]", new);
由于换行符,什么也没有读到。
要验证它,请打印第二个 scanf
的返回值来查看。
解决方案:只需使用 fgets
来完成第二个 scanf
的工作,或者在第二个 scanf
之前消耗换行符,例如将第一个 scanf
更改为 scanf("%d\n", &i);
关于c - 替换字符串中的元素问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25836657/