gpt4 book ai didi

c - 退出函数时结构体会获取垃圾值

转载 作者:行者123 更新时间:2023-11-30 19:25:32 24 4
gpt4 key购买 nike

程序应该把一个句子分成单独的单词(作业),数据正确存储在“read_data”函数中的结构中(在调试器上看到),退出主结构后,结构中的成员获得了垃圾值。出了什么问题?代码是c语言的。提前致谢。

//-----------------------------StructSection-------------------------------
struct Sentences
{
char** _data;
int _num_of_sentences;
};
//-----------------------------MainFunction------------------------------------
int main()
{
struct Sentences sen; //structure storage
char str[SIZE] = {0}; // string storage array

read_data(sen,str); //call read data function
copy_n_print_data(sen,str);
free_data(sen); // call free memory function

return EXIT_SUCCESS;
}
//-----------------------------ReadDataFunction--------------------------------
void read_data(struct Sentences sen,char str[SIZE]) // main function
{
int c;

scanf("%d", &c);
sen._num_of_sentences = c;

sen._data = (char**) malloc (c * sizeof (char*));
if(sen._data == NULL) //if not enough memory then call error function
terminate();

fgets(str, SIZE, stdin); //get string
scanf ("%[^\n]%*c", str);
}

最佳答案

您的read_data函数按值(复制)获取参数。更改参数(副本)在函数外部没有任何影响,因此在调用之后您只是打印未初始化的变量(顺便说一句,这是未定义的行为)。

似乎想要的是通过引用(或指针)获取参数,以便您的函数可以更改传入的原始变量。

关于c - 退出函数时结构体会获取垃圾值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58650516/

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