簡體   English   中英

使用scanf一次掃描多個字符和整數

[英]Using scanf to scan multiple chars and ints at once

問題似乎相對直接和基本。 好像以前有人問過,但是我無法使用搜索引擎找到任何東西。 我幾乎需要一個用戶輸入多個變量,然后將其存儲在一次掃描中。 我是C語言的新手,所以不確定為什么它不起作用。 我知道這是新手,但是不確定C的新手。

用戶幾乎會輸入類似“ * 2 4”的內容,但是由於某種原因,變量值在下一個方法中永遠不會更改。

即使我把printf("Values are %d and %d", &start, &end); 掃描后立即,這些值仍保持不變。

char symb;
int start, end;
printf("Enter a symbol, a start point, and an end point : ");
scanf("%c %d %d", &symb, &start, &end);
do_function(symb, start, end);

您可以通過檢查其返回值來檢查scanf()成功; 如果未返回3 ,則由於未掃描值,因此您的代碼將無法繼續。

"%c"之前添加空間以消耗前面的空白並檢查scanf()結果。

if (scanf(" %c %d %d", &symb, &start, &end) != 3) {
  puts("Bad input");
  exit (-1);
}

scanf("%c %d %d", &symb, &start, &end) 任何 char並將其保存到symb 通常這是上一行的'\\n' 然后,嘗試通過'*'停止讀取數字。

更好的方法是讀取整行,然后對其進行掃描。

char buf[100];
if (fgets(buf, sizeof buf, stdin) == NULL) Handle_IOErrorOrEOF();
if (sscanf(buf, " %c %d %d", &symb, &start, &end) != 3) {
  puts("Bad input");
  exit (-1);
}
do_function(symb, start, end);

注意: " %c %d %d"可能是" %c%d%d"因為除"%c""%n""%["以外的所有說明符都使用前導空格,即使沒有前導" "

弄清楚我的打印方法有問題(在不需要時使用了&號)

暫無
暫無

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

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