我需要從一個單一行中獲取一個單獨的不同輸入。特別是我需要獲得一個單獨的char
,然後根據剛剛讀取的值,它可以是一個字符串和一個int
或一個字符串,一個int
和另一個字符串等等。scanf一次獲得多個值
樣本輸入可能是:
c test 20 good
d test 10
這是我寫的:
char c, * alpha, * beta;
int val;
c = getchar();
printf("%c\n\n", c);
switch (c){
case 'd': scanf("%s %d", alpha, &val); printf ("%c %s %d", c, alpha, val); break;
case 'c': scanf("%s %d %s", alpha, &val, beta); printf ("%c %s %d %s", c, alpha, val, beta); break;
default: return 0;
}
而且它需要一個換行符(即我按回車鍵)來獲得的第一個字符,它工作正常對於d
的情況,但在c
的情況下進入段錯誤。我應該怎麼做?
'alpha'和'beta'指向無處。你應該爲他們分配一些內存。 – mch
「alpha」和「beta」或「malloc()」的'char'數組。 –
爲避免必須輸入換行符,請讀取一個字符串,然後使用sscanf。你可以調用它來獲得第一個字符,然後第二次基於char值 – samgak