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新行只会“卡住”。