阅读C中的空格

时间:2012-02-02 13:26:03

标签: c string

我的代码有问题: 我必须编写它才能让用户插入单词的描述。 我正在扭曲字典的代码,这就是问题:当我启动程序时,控制台只读取第一个单词并忽略其他单词。 例如如果我写“这意味着bla”它将只读“This”。

我正在使用此代码:

char *Description;
scanf("%s", Description);
strcpy(word[i].description,Description);

.description也是结构中的字符串,描述也必须保存。

2 个答案:

答案 0 :(得分:2)

首先,您没有为Description分配任何内存。

其次,scanf %s停在空白处。您可以改为使用fgets

fgets(word[i].description, LEN, stdin);

或者也许:

scanf("%99[^\n]", word[i].description);

答案 1 :(得分:2)

你不能只是读入指针,指针必须首先指向可写内存。当然,你有一个问题,不知道分配多少,但我们决定在2048年。

char Description[2048];
scanf( "%s", Description );

只要输入的字符串不超过2047个字符,这将有效。 (对于null终止符,还需要一个)。

你可能会使用gets而不是scanf,但你会遇到类似的问题。

这里使用的安全的是fgets

char Description[32]; // or whatever size you think is adequate
fgets( Description, sizeof(Description), stdin );

字符数量有限。请注意,将包含null终止符,因此您收到的字符串的最大长度将为31个字符。

scanf是更安全的读数,因为它们的大小是固定的。