在C中输入带空格的字符串

时间:2017-04-11 08:28:28

标签: c string multidimensional-array scanf

我希望我的程序提示用户他们想写多少句话,然后输入这些句子。但是,当我尝试输入句子时,我不断收到错误。我尝试使用几种不同的功能,但所有功能都出现了一些错误。例如,现在我正在尝试使用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]);
}

2 个答案:

答案 0 :(得分:3)

在初始化str之前定义数组n。这意味着n将具有不确定值(这看似随机)。

在定义n之前,将str的输入移至

答案 1 :(得分:1)

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

读取文件描述符0(标准输入),用于存储数据的char *缓冲区和要读取的size_t大小

您的代码中存在一些问题

nrpe_check "check_dynamodbmonitor" do
command "#{node['nrpe']['plugin_dir']}/check_procs"
parameters '-a dynamic-dynamodb -c 1:15'
action :remove
end

您也不会检查scanf的返回值