簡體   English   中英

在C中讀取空格

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM