替换字符串问题中的元素

时间:2014-09-14 18:33:55

标签: 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
    {
        printf("What would you like to be replace?\n");
        scanf("%[^\n]", new);

        strcpy(array[i],new);
    }

    return;

但是当我运行它时,scanf无法正常工作。它只是跳过任务......代码出了什么问题?

2 个答案:

答案 0 :(得分:0)

很可能是因为在scanf("%d", &i);之后输入缓冲区中有换行符,所以当你尝试使用scanf("%[^\n]", new);获取某些东西时因为换行符而没有读取任何内容。

要验证它,请打印第二个scanf的返回值以查看。

解决方案:只需使用fgets执行第二次scanf工作,或在第二次scanf之前使用换行符,例如将第一个scanf更改为scanf("%d\n", &i);

答案 1 :(得分:0)

scanf("%[^ \ n]",new);

的strcpy(阵列[I],新);

---我在第二个参数中从未见过使用新关键字。你确定这是你想要的吗?