Cộng 2 chuỗi char* bị lỗi

e khai báo
char* a=" hom nay toi an";
char* b=" thit bo";
char* c;
main()
c=a; // OK
c+=b; // lỗi là sao vậy

ae giúp cái.mình lập trình vi điều khiển nên chỉ được dùng C thôi

Bạn học lại về pointer trong C đi :confused:

Neu trong C thi dung ham strcat()

char* a=" hom nay toi an";
char* b=" thit bo";
char* c;

Lúc này, bạn đang tạo ra 3 con trỏ, trong đó có 2 con trỏ trỏ tới chuỗi hằng. :slight_smile:


c = a;

Còn cái này là gán giá trị của a chứ không phải giá trị của chuỗi mà nó đang trỏ đến. Có nghĩa lúc này, c sẽ có địa chỉ của mảng hằng ký tự mà a đang trỏ tới.

Để chứng minh, bạn cứ gõ

printf("%s", c);

Nó sẽ in ra hom hay toi an.


c += b;

Cái này là sao nhỉ :confused:. Trong con trỏ không hề hỗ trợ toán tử này :expressionless:

Theo mình biết thì con trỏ có hỗ trợ các toán tử sau:

  1. Toán tử *
  2. Toán tử &
  3. Toán tử =
  4. Toán tử ++
  5. Toán tử +-
  6. Toán tử ==, !=, <, <=, >, >=
3 Likes

c = a //OK do a, b, c là các char pointer nên bạn có thể trỏ đi chỗ khác
c+=b; // pointer ko thể áp dụng toán tử này

Bạn đang dùng string literal ( constant) nên không thể update được. Bạn muốn update strings thì cần khai báo dạng array of characters.

Mình cũng đang học C, chửa có việc làm. Bạn cho mình cái bài vi điều khiển của bạn mình thử coi :grinning:

bác muốn làm về chuỗi thì làm bằng string ấy, đừng xài con trỏ khi bác chưa học chứ

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