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