[英]Reading spaces in C
我的代码有问题:我必须编写它,以便用户插入单词的描述。 我正在整理字典的代码,这就是问题所在:启动程序时,控制台仅读取第一个单词,而忽略其他单词。 例如,如果我写“ This means bla”,它将仅显示“ This”。
我正在使用此代码:
char *Description;
scanf("%s", Description);
strcpy(word[i].description,Description);
.description
也是结构中的字符串,必须同时保存描述。
首先,您没有为Description
分配任何内存。
其次, scanf %s
停在空白处。 您可以改用fgets
:
fgets(word[i].description, LEN, stdin);
或者可能:
scanf("%99[^\n]", word[i].description);
您不能只是读入一个指针,该指针必须首先指向可写内存。 当然,您这里的问题是不知道要分配多少,但是要说我们决定使用2048。
char Description[2048];
scanf( "%s", Description );
只要输入的字符串不超过2047个字符,此命令都将起作用。 (空终止符还需要一个)。
您可能会使用get而不是scanf,但是会遇到类似的问题。
在这里使用的安全的是fgets
char Description[32]; // or whatever size you think is adequate
fgets( Description, sizeof(Description), stdin );
字符数将受到限制。 请注意,将为您包括空终止符,因此您接收到的字符串的最大长度为31个字符。
scanf可以更安全地读取数字,因为它们的大小是固定的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.