关于从文件中读取字符串,指针指向的错误(chatGPT解决)

今天在写C语言课程设计的时候,遇到一个bug让我想了很久很久。。。。

在写readLinesFormFile这个函数的时候,犯了一个错误。以至于输出的时候,输出的结果全部都是一模一样的且为最后一次。

// 从文件中读取获取 
void readLinesFromFile(FILE *file, DynamicArray *array){
	char *line = (char*)malloc(sizeof(char) * MAX_LINE_LEN);
	int i;
	for(i = 0; i < ACTIVE_MAXLINE ;i++) {
		memset(line,0,sizeof(line));
		if(fgets(line,MAX_LINE_LEN +1,file)==NULL) {
			break;
		} else {
			array->lines[i] = (char*)malloc(sizeof(char) * MAX_LINE_LEN);
			array->lines[i] = line;			
		}
	}
	
	array->size = i + 1;
	printf("读取成功\n"); 	
}

 然后我看了半天也没发现哪错了,我决定将程序发给chatGPT看看,询问其中的问题。

 

看了chatGPT的回答,才明白是不能将array->lines[i]直接指向line的。因为这样每次array->lines[i]都指向line的地址,到最后一次line是什么array->lines就是什么。所以只用改一个地方就好了。

把array->lines[i] = line 改成 strcpy(array->lines[i] , line);

 OK

值得一提的是:chatGPT真是个好工具。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值