2010-08-14 59 views
0
main(int c,char **args){ 
int i 
char input[100]; 
bzero(input,100); 
for(i=1;i<c;i++) 
    { 
    input=strcat(input,args); 
    input=strcat(input," "); 
    } 

} 

我已經包括string.h頭文件....如何輸入到一個數組

我想輸入i的命令行輸入要存儲的輸入數組英寸 任何人都可以請更正我的代碼.. 謝謝。

+0

崩潰最遲,如果argv的透鏡> = 100(輸入的sizeof)的總和; bzero不是C89或C99 – user411313 2010-08-14 07:58:21

回答

2

你有兩個致命的問題 - 第一個是你需要訪問參數數組的args[i]成員,第二個是你不能直接分配給input變量,因爲它是一個數組。

另外:

  • 您應檢查是否有足夠的空間input陣列中;
  • main()明確返回一個值是很好的風格;
  • 空白是便宜的,使用它。

下面是它看起來像固定這些問題:

int main(int c, char **args) 
{ 
    int i; 
    char input[100]; 

    bzero(input, 100); 

    for(i = 1; i < c; i++) 
    { 
     if (strlen(input) + strlen(args[i]) + 2 <= 100) 
     { 
      strcat(input, args[i]); 
      strcat(input, " "); 
     } 
    } 

    puts(input); 

    return 0; 
} 

(我還包括了puts()行,這樣就可以看到什麼input結束了)。

+0

thnx很多...但是如果條件爲什麼你把+2? – 2010-08-14 17:54:24

+0

ohhh你....我明白.... thnx .. – 2010-08-14 17:56:03

+0

1爲'「」和1爲nul終結者。 – caf 2010-08-15 04:34:58

0

你很近 - 嘗試strcat(input, args[i])

0

「char ** args」已經是一串字符串。這與說「char * args []」相同。

1

這將解決問題。

main(int c,char **args){ 
    int i 
    char input[100]; 
    bzero(input,100); 
    for(i=1;i<c;i++) 
     { 
     strcat(input,args[i]); 
     strcat(input," "); 
     } 
    } 
+0

它崩潰,如果argv-lens> = 100(sizeof輸入)的總和; bzero不是C89或C99 – user411313 2010-08-14 07:48:35

+0

謝謝!這有助於...... – 2010-08-14 17:56:34

0

詮釋三是爲c的值的參數加的文件的名稱的數量是整數並作爲(通過+ 1數目的參數)

字符** ARGS含有給定指向你傳遞的參數的指針。

您需要更改程序的第7行,如下所示;

input = strcat(input,args [i]);

0
main(int c, char **args) 
{ 
    while(c--) 
    printf(" %s",*args++); 
    return 0; 
} 
+0

+ +1爲一個簡單的解決方案,-1爲在教學代碼中濫用'--'和'++'參數'main'。 – 2010-08-14 09:49:00

0

如果你不想限制你的程序爲100個字符的輸入。您可以使用realloc動態擴展數組的大小輸入

並避免使用bzero,而是使用memset這是標準的一部分。即使你可以省略那條線。

int main(int c, char **args) { 
int i; 
int limit = 100; 
char *input = calloc(limit,sizeof(limit)); 

memset(input,0, limit * sizeof(char)); // No need but better than bzero. 
for (i=0;i<c;i++) { 
    if (strlen(input) + strlen(args[i]) + 2 > limit) { //avoiding input overflow. 
     limit = strlen(input) + strlen(args[i]) + 2; 
     input = realloc(input,limit); 
    } 
    strcat(input,args[i]); 
    strcat(input," "); 
} 
puts(input); 
free(input); 
return 0; 

}

相關問題