提问人:Python Asker 提问时间:10/27/2021 最后编辑:ChrisPython Asker 更新时间:10/27/2021 访问量:103
为什么我不能将字符串添加到结构中?
Why can't I add a string to a structure?
问:
因此,我正在尝试创建一个将数据读取到文件中的程序。但在此之前,我需要将数据存储到结构中。如何在结构中存储字符串?
#include <stdio.h>
#define MAX 100
int count;
struct cg {
float price;
char singer, song;
int release;
} hold[100];
int main() {
while (1) {
printf("Name of band of Singer: ");
scanf_s("%s,", &hold[count].singer);
printf("Name of Song: ");
scanf_s("%c", &hold[count].song);
printf("Price: ");
scanf_s("%f", &hold[count].price);
printf("Year of Release: ");
scanf_s("%d", &hold[count].release);
count++;
printf("\n");
}
}
答:
0赞
babon
10/27/2021
#1
由于这里的问题是关于将字符串存储在 中,这里有一个基本的解决方案:struct
#include <stdio.h>
#define MAX 100
int count;
struct cg {
float price;
char singer[20], song[20];
int release;
}hold[100];
int main() {
printf("Name of band of Singer: ");
fgets(hold[0].singer, 20, stdin);
printf("Singer: %s\n", hold[0].singer);
}
该程序只是演示在结构中存储字符串。这里,是您可以存储在 或 中的最大字符数(包括终止符)。或者,您还可以动态分配内存,用于存储字符串。20
NUL
singer
song
malloc()
请注意,您的程序还有其他几个问题。例如,你的循环永远不会结束,并且缺少 a。}
评论
0赞
Python Asker
10/27/2021
谢谢你回答我的问题。原始代码要长得多,我只复制了我需要帮助的部分。对于其他变量,我可以只使用 scanf,对吧?
0赞
stark
10/27/2021
避免混合 fgets 和 scanf。还要记住,fgets 在末尾包含换行符。
上一个:为什么 fscanf 读取垃圾?
评论
char singer, song;
char singer[100], song[200];