gpt4 book ai didi

c - 从结构体定义的数组中打印出字符串

转载 作者:行者123 更新时间:2023-11-30 16:05:54 25 4
gpt4 key购买 nike

当我运行代码时,我只得到第二个 ID 的“amsung”和第四个 ID 的“”,我尝试在字符串“. . . . Samsung”中放入一些空格,它“修复了它”,所以我'我认为这与结构数组的定义方式或字符串的访问方式有关。由于我对结构仍然陌生,所以我不太确定发生了什么,任何见解将不胜感激。

#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";
}

最佳答案

我认为有 3 个问题

  1. 您需要为您的字符品牌[]指定大小,或者需要对其进行 malloc。

  2. 主要使用 tvs[answer],但需要使用 tvs[answer -1] 在数组中包含正确的值(数组从 0 开始)

  3. 主要是 printf("请选择一个有效的...");当你回答为0时会打印它。但0是有效的,它用于退出。

希望对你有帮助

关于c - 从结构体定义的数组中打印出字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60127542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com