簡體   English   中英

是否有 scanf 的格式化程序允許我忽略空格直到下一個字符串,我需要讀取空格? C 語言

[英]Is there a formatter for scanf that allows me to ignore spaces until the next string, which I needs to read spaces? C language

為大學做一個項目,

面臨一個問題,我需要讀取一行,我需要讀取第一個字符來選擇命令(使用 getchar,工作正常)。 在輸入字符串之前,第一個字符由不確定數量的' '分隔。 字符串本身需要能夠讀取到行尾(包括' ' )。

這行得通嗎?

char c;
c= getchar();
while(c==' ')
  c=getchar();

還是最后一個c會被“吃掉”? 那么我需要手動將它添加到字符串中,對嗎?

作為后續行動,如果我之后做了:

string[0]=c;
scanf("%20[^\n]", string);

我會覆蓋第一個字符嗎?

是的,

string[0]=c;
scanf("%20[^\n]", string);

將覆蓋第一個字符。

您可以向格式說明符添加一個空白字符,以告訴scanf()忽略空白字符。

scanf(" %20[^\n]", string);

如果你想手動跳過空白字符,你可以使用ungetc()把第一個想要的字符放回 stream

ungetc(c, stdin);
scanf("%20[^\n]", string);

或者手動將字符放入數組,然后讓scanf()存儲在第一個元素之后讀取的內容。

string[0]=c;
scanf("%20[^\n]", string + 1);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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