30/09/2018, 23:46

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

Nguyễn Tấn Khoa viết 01:59 ngày 01/10/2018

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

Người bí ẩn viết 02:02 ngày 01/10/2018

Neu trong C thi dung ham strcat()

Nguyễn Tấn Khoa viết 01:52 ngày 01/10/2018
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.


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ỉ . Trong con trỏ không hề hỗ trợ toán tử này

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ử ==, !=, <, <=, >, >=
anon45952904 viết 01:48 ngày 01/10/2018

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

Mai Hữu viết 01:49 ngày 01/10/2018

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ứ

Bài liên quan
0