Cần giải đáp về lỗi sai khi truyền chuỗi 2 chiều

Bữa nay em rút gọn các chuỗi 1D về 2D thì gặp lỗi, em đã cố gắng hết cả ngày rồi những vẫn chỉ biết nó sai ở đâu chứ ko hiểu sao sai nữa. MOng có ai đó đi qua giúp đỡ newbie tí ạ. Ở đây là ví dụ ngắn về lỗi đó.

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void match_string(char**,char**);
void match(char*,char*);

int main()
{
    char string1[2][100], string2[2][100];
    strcpy(string1[0],"my name is ");
    strcpy(string1[1],"Age ");
    strcpy(string2[0],"Michell");
    strcpy(string2[1],"twenty");

    match_string(string1,string2);// lỗi chổ này
}
void match_string(char**graphic,char**letter)
{
    match(graphic[0],letter[0]);
    match(graphic[1],letter[0]);

    printf("%s\n",graphic[0]);
    printf("%s\n",graphic[1]);
}
void match(char*string1,char*string2)
{
   int i=0, j=0, length1=0, length2=0;
   length1 = strlen(string1);
   length2 = strlen(string2);

   for(i = length1; i<length1+length2; i++ )
   {
      string1[i] = string2[j];
      j++;
   }

   string1[i] = '\0';
}

Có thêm dòng warning này nữa
passing argument 1 of 'match_string' from incompatible pointer type

Cứ lỗi, lỗi và lỗi mà không miêu tả nó bị cái gì.


Đó chỉ là cảnh báo, vì bạn truyền mảng 2 chiều, nhưng tham số lại nhận con trỏ cấp 2. Tưởng giống nhau nhưng nó khác nhau đấy.

6 Likes

Vậy là chỗ parameter phải sửa lại thành char string[][xxx], kể cả mảng 1 chiều cũng phải sửa, và đã chạy ổn rồi. Em cảm ơn a nhiều.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?