Я не могу дать строковое значение строковой переменной в этом коде. Почему? Я также не понял сообщение об ошибке - PullRequest
0 голосов
/ 19 февраля 2020

К вашему сведению, я новичок в программировании. Когда я пытаюсь скомпилировать этот код, он выдает ошибку:

[Warning] non-static data member initializers only available with -std=c++11 or -std=gnu++11
[Error] initializer-string for array of chars is too long [-fpermissive]

Я много искал, но все статьи используют именно этот метод. Может кто-нибудь объяснить, почему я получаю эту ошибку? Объясните на языке, который я могу понять. Я не понял большинство ответов и причин, изложенных.

#include <stdio.h>
struct person{
    char name[] = "something";  
};
int main(){
    struct person per;
    printf("%s",per.name);
}

1 Ответ

1 голос
/ 19 февраля 2020

Проще - потому что язык C не позволяет его, так как C не имеет конструкторов. Вам нужно инициализировать переменные самостоятельно при их определении.

#include <stdio.h>
struct person{
    char name[100];  
};
int main(){
    struct person per = {.name = "something"};
    printf("%s",per.name);
}
...