gpt4 book ai didi

c - Malloc 和结构

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

我在 malloc 和结构方面面临一些困难。我想读取我的代码中所示的 m_data.number_chars (这是一个整数)作为我想要分配的内存..但是当我编译我的代码并运行它时,它会崩溃..有什么想法..?提前致谢!

#include <stdio.h>

struct movies {
int number_chars;
char name;
int made_year;
float money;
};
struct movies m_data;


int main()
{
scanf("%d",&m_data.number_chars);
m_data.name=malloc(m_data.number_chars);
gets(m_data.name);
printf("%s",m_data.name);
}

最佳答案

好吧,您应该将 char* 传递给 scanf - 更具体地说,是存储输入的变量的地址。你没有这样做。

标准函数没有返回值检查,当然您之前没有使用malloc

#include <stdio.h>
#include <stdlib.h>
struct movies {
int number_chars;
char* name;
int made_year;
float money;
};
struct movies m_data;


int main(void)
{
if( scanf("%d",&m_data.number_chars)!= 1){
fprintf(stderr, "%s\n", "Error in input");
exit(EXIT_FAILURE);
}
getchar();
if(m_data.number_chars <= 0){
fprintf(stderr, "%s\n", "Error in number of character count");
exit(EXIT_FAILURE);
}
m_data.name = malloc(m_data.number_chars+1);
if(!m_data.name){
perror("Malloc error");
exit(EXIT_FAILURE);
}
if(fgets(m_data.name,m_data.number_chars+1,stdin)){
printf("[%s]\n",m_data.name);
}
return 0;
}

关于c - Malloc 和结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48212198/

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