我的代码有问题: 我必须编写它才能让用户插入单词的描述。 我正在扭曲字典的代码,这就是问题:当我启动程序时,控制台只读取第一个单词并忽略其他单词。 例如如果我写“这意味着bla”它将只读“This”。
我正在使用此代码:
char *Description;
scanf("%s", Description);
strcpy(word[i].description,Description);
.description
也是结构中的字符串,描述也必须保存。
答案 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是更安全的读数,因为它们的大小是固定的。