[英]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.