(我在C
輸入/處理字符串非常糟糕。希望這個問題會教我很多東西。)輸入在C即數學的陳述和返回值
我試圖做一個函數,將輸入來自stdin
的算術字符串,例如23 + 45 * 6 - 5
,並返回該值。
有多個字符串,輸入一個接一個,可以是任意長度,並且運算符優先順序無關緊要,即它按順序處理字符串。
,我所面臨的問題是: -
\n
從以前的字符串也被認爲是string.So如果我輸入的字符串3,它實際上是6,3串和3\n
。- 我使用了一個字符指針並使用了
char * input; scanf(" %s",input);
,但是除了上面的問題,我還得到了段錯誤,我猜是因爲缺少\0
。
我的問題是忘記我做了什麼混亂,你會做什麼或在上述場景中處理字符串輸入的最佳方式是什麼。虛擬代碼就足夠了。謝謝。
我是做
#include <stdio.h>
int main()
{
int t; //no of test cases
char input;
scanf("%d",&t);
while(t--)
{
while((input=getchar())!='\n')
{
//use switch to identify char and follow appropriate action
printf("%c\n",input);
}
}
return 0;
}
在這裏你不會得到免費的代碼。顯示你的嘗試,我們會指出錯誤。 – Igor 2014-09-28 15:19:54
如果你使用['fgets'](http://en.cppreference.com/w/c/io/fgets),那麼換行符將在* current *行的緩衝區中。由於它是最後一個,很容易刪除(用終止符替換)。 – 2014-09-28 15:20:28
這個問題還不清楚(特別是沒有顯示你的代碼),但如果你輸入一個帶空格的字符串,你應該使用'fgets'而不是'scanf'。 – interjay 2014-09-28 15:20:35