配列にメモリを動的に割り当てるのに問題があります。プログラムは単純に、最初の行を 2 番目の行と、3 番目の行を 4 番目の行と交換することになっています。次のような奇妙な結果が得られます。
文字列を入力してください: こんにちは
文字列を入力してください: お元気ですか
文字列を入力してください: 私は元気です
文字列を入力してください: さようなら
文字列を入力してください: バイ
文字列を入力してください: xx
=========================
元気ですか
元気です ありがとう
こんにちは
!元気ですか
さよなら
ばい
元気です ありがとう
!さよなら
バイ
!xx
int count = 0;
char *lines[MAX_LINES];
char *tmp[50];
printf("Enter string: ");
fgets(tmp, 50, stdin);
lines[count] = (char *) malloc((strlen(tmp)+1) * sizeof(char));
strcpy(lines[count], tmp);
while(strcmp("xx\n", lines[count])){
count++;
printf("Enter string: ");
fgets(tmp, 50, stdin);
lines[count] = (char *) malloc((strlen(tmp)+1)* sizeof(char));
strcpy(lines[count], tmp);
}
void exchange(char * records[])
{
char * temp;
temp = records[0];
records[0] = records[1];
records[1] = temp;
temp = records[2];
records[2] = records[3];
records[3] = temp;
}
void printArray(char * inputs[], int row, int col)
{
int i, j;
for(i = 0; i < row; i++){
for(j = 0; j < col; j++){
printf("%c", inputs[i][j]);
}
}
}