Когда я запускаю код, я получаю только «amsung» для 2-го идентификатора и «» для 4-го, я пытался вставить несколько пробелов в строку «... Samsung», и он «исправил это», поэтому я Я думаю, что это как-то связано с тем, как определяется массив struct или как осуществляется доступ к строке. Так как я все еще новичок в структурах, и поэтому я не слишком уверен, что происходит, любые идеи будут с благодарностью.
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
const char * getSize(bool size);
const char * getUHD(bool UHD);
typedef struct tvs {
int id;
bool size; //have 1-3 for small to large
bool UHD; //0 or 1 is yes/no
char brand[];
} tv;
tv tvs[4] = {
{ .id=1, .size=false, .UHD=false, .brand="Phillips"},
{ .id=2, .size=true, .UHD=true, .brand="Samsung"},
{ .id=3, .size=false, .UHD=true, .brand="LG"},
{ .id=4, .size=false, .UHD=false, .brand="Panasonic"}
};
int main(){
int answer;
answer = -1;
int scanf_result;
while(answer != 0){
printf("\nPlease choose a TV ID. [0 to terminate the program]\n");
scanf_result=scanf("%d",&answer);
if((scanf_result == 0)|(scanf_result == EOF)){
printf("\n *** Please enter an integer. ***\n");
answer = -1;
}
if(answer >= 1 && answer <= 4) {
printf("Selected TV ID # %d: \nBrand: %s \nSize: %s \nUHD: %s", answer, tvs[answer].brand, getSize(tvs[answer].size),getUHD(tvs[answer].UHD));
}
else {
printf("Please select a valid TV ID.\n");
}
}
return 0;
}
const char * getSize(bool size) {
return size == true ? "Large" : "Medium";
}
const char * getUHD(bool UHD) {
return UHD == true ? "Yes" : "No";
}