C 替换字符串问题中的元素
这是我的密码C 替换字符串问题中的元素,c,C,这是我的密码 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
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)代码>scanf(“%[^\n]”,新)
strcpy(数组[i],新)
---在第二个参数中,我从未见过使用新关键字。您确定这就是您想要的吗?尝试向在scanf前面添加的第一个scanfI添加一个\n(“%[^\n]”,新建);这是可行的,但我所做的是在scanf前面添加了“%[^\n]”,new)@kybookie,它也使用新行,因此预计它会起作用。:)你实际上是如何“吃”这条新线的。您在first scanf中\n的建议对我不起作用。@arcomber Hi您的代码是什么?在本例中,它是有效的,但我不知道您的代码是什么。@starrify与asker相同,但第一次scanf:scanf(“%d”,&I);使用VS2008新行只会“卡住”。