2013-11-28 117 views
0

在我的程序中,用戶輸入這樣的行(5 *(22 + 1))。現在我需要分開數字和其他字符。所以我寫了這樣的代碼。是否可以在c中執行此操作?還是有任何簡單的方法來解決這個問題?我嘗試這種方式。在c中連接字符數組(字符串)

#include <stdio.h> 
int main() 
{ 
    int i=0; 
    char s[50]; 
    printf("Enter the line"); 
    gets(s); 

    while(s[i]!='\n') 
    { 
     if(s[i]=='+' || s[i]=='-',s[i]=='*',s[i]=='/') 
     { 
      break; 
     } 
     else 
     { 
      char n[5]; 
      n=n+s[i]; 
     } 
     printf("%s",n); 

     i++; 

     } 


    return 0; 
} 
+0

那麼,畢竟你的問題是什麼? – 2013-11-28 20:20:16

+0

1.不要使用'gets'。 **從來沒有** 2. char n [5]; n = n + s [i];'我甚至不知道那應該是什麼意思。 3.'printf(「%s」,n);''n'不在這個範圍內。 – Kninnug

+0

如果按照'n = n + s [i];'你的意思是像你在其他語言中那樣進行字符串連接,那就行不通了:如果是這種情況,請檢查'strcat'函數。 – SolarBear

回答

2

我建議你看看sscanf函數。它可能有助於提取小數。

而且,你的代碼有更多的錯誤:

if(s[i]=='+' || s[i]=='-',s[i]=='*',s[i]=='/') 

應該

if(s[i]=='+' || s[i]=='-' || s[i]=='*' || s[i]=='/') 


char n[5]; 
n=n+s[i]; 

這是不對的。 n是一個指針(一個內存地址)。向它添加一個字符沒有意義。如果你想連接,看看strcat函數。還要注意,你沒有初始化n。在C中,這是要求的。

printf("%s",n); 

這裏n超出範圍。它的存在只是括號之間:

{ 
char n[5]; 
n=n+s[i]; 
} //here n does not exists any more 

爲了防止這種情況,申報ñ外括號。