gpt4 book ai didi

c - 由于 C 中的这些指针和数组,程序崩溃

转载 作者:行者123 更新时间:2023-11-30 21:10:20 25 4
gpt4 key购买 nike

由于这些指针变量,我的代码崩溃了。他们怎么了?

main 中的变量声明

char* fname = (first_name_length*sizeof(char));

char* lname = (last_name_length*sizeof(char));

char* pfname = &fname[0];

char* plname = &lname[0];

功能

void get_first_name(FILE* fp, int length, char* pfname){

char c;
int i = 0;
int number_of_conversions;

//char* first_name = malloc(length*sizeof(char));

number_of_conversions = fscanf(fp, "%c", &c);

while (!isspace(c)){

pfname[i] = c;

number_of_conversions = fscanf(fp, "%c", &c);

}

}

最佳答案

char* fname = (first_name_length*sizeof(char));
char* lname = (last_name_length*sizeof(char));

这不是在 C 中分配内存的方式。您可以静态分配内存:

char fname[first_name_length]; //This assumes that first_ and last_name_length are
char lname[last_name_length]; //constants

或者像这样动态地:

char* fname = malloc(first_name_length*sizeof(char)); //first_ and last_name_length can
char* lname = malloc(last_name_length*sizeof(char)); //be constants or variables

关于c - 由于 C 中的这些指针和数组,程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29988159/

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