Hỏi sâu về việc return chuỗi trong hàm

char NhuYeuCau(char Cau[])
{
    int n = (int)strlen(Cau);
    static char ketqua[100];
    char temp[50];
    int i,j;
    for(i=n-1;i>=0;)
    {
        for(j=0;i>=0 && Cau[j]!=' ';--i,++j)
        {
            temp[j]=Cau[i];
        }
        
        temp[j]='\0';
        
        DaoNguocChu(temp);
        strcat(ketqua,temp);
        strcat(ketqua," ");
        
        i--;
    }
    //strcpy(Cau,ketqua);
    return ketqua;
}
  • Khi build thì complier báo lỗi ạ.
  • Đổi tên hàm từ char -> char* thì ok.
  • Em cũng google “return chuổi trong hàm” nhưng các câu trả lời đều không nói rõ nguyên nhân lắm. Đọc thấy có 2 giải pháp:
    1. Đổi thành char* như trên.
    2. Cấp phát động trong hàm.

Em không hiểu tại sao lại phải là char* mà không phải là char
Với cả cấp phát động lại được ?
Em cảm ơn m.n nhiều.

Code đã được sửa ở trên rồi nên bạn không cần đăng lại nữa nhé.

Xem cách đăng code lên DNH ở đây:

1 Like

Do cái ketqua của bạn là một chuỗi ký tự nên không thể là kiểu char được.
Mà để quản lý một chuỗi ký tự thì bạn có thể dùng mảng char[] hoặc con trỏ char*.

4 Likes

mình hiểu rồi, cảm ơn bạn nhe !

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