#define OK 0
#define MAXSTRING 200
#define NUMBER 10
#define MALLOC_ERROR 2
int main(int argc, char** argv) {
char **B = (char**)malloc(sizeof(char*)*NUMBER);
char buffer[MAXSTRING];
int i, strings = 0, arraysize = NUMBER;
if ((B = (char**)malloc(sizeof(char*)*NUMBER))==NULL) {
printf("initial malloc error\n");
fflush(stdout);
exit(MALLOC_ERROR);
}
for(int i = 0; i< NUMBER; i++) {
B[i] = (char*)malloc(sizeof(char)*MAXSTRING);
}
while((fgets(buffer,MAXSTRING,stdin))!=NULL) {
/*
if(strings+1>arraysize)
{
arraysize = 2*arraysize;
B=realloc(B,(arraysize)*sizeof(char*));
}
*/
buffer[strlen(buffer)-1]='\0';
B[strings] = buffer;
printf("%s \n", buffer);
strings++;
}
printf("Read %d strings:\n", strings);
for (i = 0; i<strings ; i++) {
printf("\t%s\t %d\n", B[i], (int)strlen(B[i]));
}
return 0;
}
ループからB [i]を印刷しようとすると、すべての位置のstdinの最後の入力が出力されます。私は通常のforループでテストを試みましたが、何とか動作しますが、私は問題の原因を知りません。助けてくれてありがとう!!たとえば、最初の入力として「キリン」を入れ、別の入力「食べる」、最後の入力「葉」、B [i]のループだけが「葉」を出力しますchar配列が正常に動作しない(Cプログラミング)
あなたの入力は何を動作するはず?あなたの出力は何ですか? _expected_の出力は何ですか?あなたの質問を編集して、それを明確にしてください。 –
ありがとう。今strcpyで動作します。 :Dありがとうございました –