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的命令行輸入要存儲的輸入數組英寸 任何人都可以請更正我的代碼.. 謝謝。
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的命令行輸入要存儲的輸入數組英寸 任何人都可以請更正我的代碼.. 謝謝。
你有兩個致命的問題 - 第一個是你需要訪問參數數組的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
結束了)。
thnx很多...但是如果條件爲什麼你把+2? – 2010-08-14 17:54:24
ohhh你....我明白.... thnx .. – 2010-08-14 17:56:03
1爲'「」和1爲nul終結者。 – caf 2010-08-15 04:34:58
你很近 - 嘗試strcat(input, args[i])
。
「char ** args」已經是一串字符串。這與說「char * args []」相同。
這將解決問題。
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," ");
}
}
它崩潰,如果argv-lens> = 100(sizeof輸入)的總和; bzero不是C89或C99 – user411313 2010-08-14 07:48:35
謝謝!這有助於...... – 2010-08-14 17:56:34
詮釋三是爲c的值的參數加的文件的名稱的數量是整數並作爲(通過+ 1數目的參數)
字符** ARGS含有給定指向你傳遞的參數的指針。
您需要更改程序的第7行,如下所示;
input = strcat(input,args [i]);
main(int c, char **args)
{
while(c--)
printf(" %s",*args++);
return 0;
}
+ +1爲一個簡單的解決方案,-1爲在教學代碼中濫用'--'和'++'參數'main'。 – 2010-08-14 09:49:00
如果你不想限制你的程序爲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;
}
崩潰最遲,如果argv的透鏡> = 100(輸入的sizeof)的總和; bzero不是C89或C99 – user411313 2010-08-14 07:58:21