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
    {
        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/

相关文章:

python - gdb python pretty-print uint64_t 被解释为有符号

C编程指针数组读取文件

c - 如何处理多个定时器信号

c - c中的结构体链表

c - 堆栈分配、填充和对齐

c - 链接列表使我的程序崩溃

c - While 循环占用大量 CPU

c - 在 C 中有效地提取 double 的小数部分

c - 删除换行符

c - 下面的代码有什么作用?