Estoy tratando de entender cómo resolver este problema trivial en C, de la manera más limpia/más segura. Aquí está mi ejemplo:¿Cómo asignar correctamente un nuevo valor de cadena?
#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;
}
de error del compilador es:
main.c: In function ‘main’: main.c:18: error: incompatible types when assigning to type ‘char[20]’ from type ‘char *’
entiendo que C (no C++) no tiene ningún tipo String y en su lugar utiliza conjuntos de caracteres, por lo que otra manera de hacerlo era a alterar la estructura ejemplo para mantener los punteros de caracteres:
#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;
}
esto funciona como se esperaba, pero me pregunto si hay una mejor manera de hacer esto. Gracias.
Si declaramos struct en 'main()', solo se puede acceder a la persona dentro de ella. Intenta moverte desde main para usarlo como global – EsmaeelE