gpt4 book ai didi

c - 从 fgets 中删除换行符 - 不断出现段错误

转载 作者:太空宇宙 更新时间:2023-11-04 02:03:19 24 4
gpt4 key购买 nike

我正在尝试解析来自命令行的输入,但我的 C 程序中一直出现段错误。关于问题出在哪里的任何想法?现在我想去掉用户输入末尾的 \n

void assign_to_array(char *command){
char *in;
int len;
char *pos;

char **info = calloc(10,sizeof(char*));

for(int i=0;i<10;i++){
info[i]=calloc(50,sizeof(char));
}

in = strtok(command," ");
if((pos=strchr(in,'\n')) != NULL)
*pos='\0';

while (in != NULL){
in = strtok(NULL," ");
if((pos=strchr(in,'\n')) != NULL)
*pos='\0';
}

for(int i=0;i<3;i++)
free(info[i]);
free(info);
}

最佳答案

您的代码在重新分配 in 后调用 strchr,而不检查它是否为 NULL

解决这个问题的方法如下:

while (in != NULL){
in = strtok(NULL," ");
if (in == NULL) break; // <<== Add this line
if((pos=strchr(in,'\n')) != NULL) *pos='\0';
}

Here is a demo on ideone.

关于c - 从 fgets 中删除换行符 - 不断出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23860612/

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