#c
#c
Вопрос:
#include <stdio.h>
#include <stdlib.h>
struct fl{
char sub[3] = {"Math","Science","ICT"};
};
int main()
{
int i;
struct fl floatp;
for (i = 0; i < 3; i){
printf (" %s",floatp.sub[i]);
}
return 0;
}
Я получаю эту ошибку «в struct fl нет элемента с именем sub» в 11-й строке. Но у меня есть элемент с именем ‘sub’. Что я делаю не так?
Комментарии:
1.
char *sub[3] = {"Math","Science","ICT"};
, но этот вид инициализации по-прежнему некорректен.2. Ваш компилятор не выдал ошибку в строке, упомянутой @wildplasser?
3. Не требуется
[3]
— использовать[]
вместо этого — заставить компилятор выполнить подсчет4. @wildplasser: Чтобы подробнее остановиться на этом, любая инициализация элемента struct недопустима. Аник, это единственное сообщение об ошибке, которое ты получил? Вы должны были получить ошибку при определении
sub
. И даже если бы это было разрешено,sub
это массив из 3 символов; он не может содержать три строки или указатели на строки.5. @KeithThompson: Я знаю.
Ответ №1:
Вы хотите это:
#include <stdio.h>
#include <stdlib.h>
struct fl {
char *sub[3];
};
int main()
{
int i;
struct fl floatp = {{ "Math","Science","ICT" }};
// or if your compiler supports it:
// struct fl floatp = {.sub = { "Math","Science","ICT" }};
for (i = 0; i < 3; i) {
printf(" %s", floatp.sub[i]);
}
return 0;
}
Комментарии:
1. У меня есть один вопрос. Зачем использовать две фигурные скобки в 9-й строке?
2. Внешний для структуры, внутренний для массива.