【问题标题】:Inputting a string with spaces in C在C中输入带有空格的字符串
【发布时间】:2025-11-28 09:20:05
【问题描述】:

我希望我的程序提示用户他们想写多少个句子,然后输入这些句子。但是,当我尝试输入句子时,我不断收到错误。我尝试使用几种不同的功能,但它们都给出了某种错误。例如,现在我正在尝试使用 fgets() 并且在我输入第一句话后它给了我一个分段错误。有人可以告诉我输入带空格的字符串的最佳方法是什么以及如何解决我的问题?

int n;
char str[n][80];

printf("Enter number of lines: ");
scanf("%d", &n);

printf("Enter a sentecne: ");
for(int i = 0; i < n; i++){
    fgets(str[i], 80, stdin);
    printf("%s", str[i]);
}

【问题讨论】:

  • 你定义了一个带有未初始化变量的 char 数组。
  • 不测试 scanf 和 fgets 的返回值是自找麻烦。

标签: c string multidimensional-array scanf


【解决方案1】:

在初始化 n 之前定义数组 str。这意味着n 将有一个 indeterminate 值(看起来是随机的)。

n 的输入移动到之前你定义str

【讨论】:

    【解决方案2】:

    您可以使用读取功能http://man7.org/linux/man-pages/man2/read.2.html

    读取文件描述符 0(标准输入)、用于存储数据的 char *buffer 以及要读取的 size_t 大小

    你的代码有几个问题

    int n; // must have a value
    int n = 10; // example, here your variable is initialized
    

    你也不检查scanf的返回值

    【讨论】:

      最近更新 更多