为什么我不能将字符串添加到结构中?

Why can't I add a string to a structure?

提问人:Python Asker 提问时间:10/27/2021 最后编辑:ChrisPython Asker 更新时间:10/27/2021 访问量:103

问:

因此,我正在尝试创建一个将数据读取到文件中的程序。但在此之前,我需要将数据存储到结构中。如何在结构中存储字符串?

#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");
    }
}
c 字符串 结构

评论

0赞 pmg 10/27/2021
而不是用于最多 99 个字符的歌手和最多 199 个字符的歌曲。char singer, song;char singer[100], song[200];
0赞 the busybee 10/27/2021
或者考虑使用指向动态分配的字符数组的指针。

答:

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);
}

该程序只是演示在结构中存储字符串。这里,是您可以存储在 或 中的最大字符数(包括终止符)。或者,您还可以动态分配内存,用于存储字符串。20NULsingersongmalloc()

请注意,您的程序还有其他几个问题。例如,你的循环永远不会结束,并且缺少 a。}

评论

0赞 Python Asker 10/27/2021
谢谢你回答我的问题。原始代码要长得多,我只复制了我需要帮助的部分。对于其他变量,我可以只使用 scanf,对吧?
0赞 stark 10/27/2021
避免混合 fgets 和 scanf。还要记住,fgets 在末尾包含换行符。