2015-11-01 66 views
0

我試圖輸入no個測試用例(t),並且n次輸入一個字符串並處理它。這是我試過的代碼:如何在c中使用scanf()輸入一個字符串n次數

char str[10000]; 
    int size,flag,i,t; 
    scanf("%d",&t); 
    while(t--){ 
     gets(str); 
     flag=1; 
     size=0; 
     while(str[size]!='\0') size++; 
     if(size<2) flag=0; 
     for(i=0;i<size/2;i++) 
      if(abs(str[i+1]-str[i])!=abs(str[size-i-1]-str[size-i-2])) flag=0; 
     if(flag) printf("Funny\n"); 
     else  printf("Not Funny\n"); 
    } 

也很到位使用得到的,我也試過:

scanf("%[^\t\n]s",str); 

但似乎沒有任何工作

+1

此代碼假設測試什麼?你得到的輸出/錯誤是什麼? –

+0

不要使用'gets'--這是一種可怕的習慣。使用具有明確緩衝區大小的'fgets'。 –

+0

from gets手冊:'不要使用gets()。因爲事先不知道數據是不可能知道get()將讀取多少個字符的,並且因爲gets()會繼續存儲超過緩衝區末尾的字符,所以使用它非常危險。它已被用來破壞計算機安全。使用fgets()代替.' –

回答

0

其實,我知道了。

int t; 
    char str[100]; 
    scanf("%d",&t); 
    while(t--) 
     scanf("%s",str); 

這工作得很好。

+0

...直到用戶輸入超過99個字符的單詞,此時您將緩衝區溢出。你也不檢查錯誤。使用'if(scanf(「%99s」,str)!= 1)[/ *出現錯誤* /}'。 –

相關問題