Tôi đang cố gắng hiểu cách giải quyết vấn đề tầm thường này trong C, theo cách sạch nhất/an toàn nhất. Dưới đây là ví dụ của tôi:Cách gán đúng giá trị chuỗi mới?
#include <stdio.h>
int main(int argc, char *argv[])
{
typedef struct
{
char name[20];
char surname[20];
int unsigned age;
} person;
//Here i can pass strings as values...how does it works?
person p = {"John", "Doe",30};
printf("Name: %s; Age: %d\n",p.name,p.age);
// This works as expected...
p.age = 25;
//...but the same approach doesn't work with a string
p.name = "Jane";
printf("Name: %s; Age: %d\n",p.name,p.age);
return 1;
}
lỗi của trình biên dịch là:
main.c: In function ‘main’: main.c:18: error: incompatible types when assigning to type ‘char[20]’ from type ‘char *’
Tôi hiểu rằng C (không phải C++) không có kiểu String và thay vào đó sử dụng mảng các ký tự, vì vậy một cách khác để làm điều này là để thay đổi cấu trúc ví dụ để giữ con trỏ của ký tự:
#include <stdio.h>
int main(int argc, char *argv[])
{
typedef struct
{
char *name;
char *surname;
int unsigned age;
} person;
person p = {"John", "Doe",30};
printf("Name: %s; Age: %d\n",p.name,p.age);
p.age = 25;
p.name = "Jane";
printf("Name: %s; Age: %d\n",p.name,p.age);
return 1;
}
Điều này làm việc như mong đợi nhưng tôi tự hỏi liệu có cách nào tốt hơn để làm điều này không. Cảm ơn.
Nếu chúng ta khai báo cấu trúc trong 'main()', người đó chỉ có thể truy cập bên trong nó. Hãy thử di chuyển ra khỏi chính để sử dụng nó như là toàn cầu – EsmaeelE