的陣列時,我有以下代碼:錯誤結果複製串
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* user;
char* passwd;
int nr;
void test()
{
int i=0;
for(i=0;i<argc;i++)
printf("Hello %s \n",user);
}
int main(int argc,char*argv[])
{
int i;
nr=argc;
for (i=0; i<argc; i++)
{
user=strdup(argv[i]);
}
test();
return 0;
}
其結果是在所有的位置上的argv[argc]
。我怎樣才能解決這個問題?我想在循環之外進行測試()。
**
編輯
** 這裏的答案,這是我的新代碼,這是不工作後。有誰可以說爲什麼?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* user;
void test(int n)
{
int i=0;
for(i=0;i<n;i++)
printf("%s \n",user[i]);
}
int main(int argc,char*argv[])
{
user = (char*) malloc(argc*sizeof(char));
int i;
for (i=0;i<argc;i++)
{
user[i]=argv[i];
}
test(argc);
return 0;
}
重新編輯:您需要'malloc(argc * sizeof(char *))'。你想要一個'char *'數組,但忘記'sizeof'參數中的'*'。你必須聲明'user'是'char **'。 –
爲什麼我要neec char *和char ** ?!你能解釋一下嗎?我很困惑 –
'argv [i]'是一個指向'char'的指針。你(試圖)把它分配給'user [i]',爲了這個工作,'user [i]'必須和'char *'兼容,所以用戶應該是'char *'的數組 - 比如' char * user [100];'如果事先知道大小 - 或者指向一個內存塊的指針_used_作爲'char *'的數組。 'user'指向的類型必須具有'char *'的大小才能使索引正常工作。用戶指向的東西必須具有'char *'的大小,並且它們被用作'char *',所以正確的事情是將它們聲明爲'char *','user'作爲指向'字符*'。 –