【发布时间】:2014-11-03 20:20:33
【问题描述】:
我有一个读取文件的函数(来自标准输入),读取前 3 行并将它们连接起来。
char line[LINESIZE];
char *temp_fd = malloc(sizeof(char)*LINESIZE*3);
char *temp_sm = malloc(sizeof(char)*LINESIZE);
char *temp_nm = malloc(sizeof(char)*LINESIZE);
char temp_pc[LINESIZE];
for(i=0;i<3;i++) {
if (fgets(line, LINESIZE, file) != NULL) {
strcat(temp_fd,line);
if (i==0)
strcpy(temp_sn, line);
else if(i==1)
strcpy(temp_nm, line);
else if(i==2)
strcpy(temp_pc,line);
}
}
虽然在 valgrind 中出现了两个错误,但据我所知,strcat 是问题所在。如何为我的指针正确分配内存? (LINESIZE 是 60 btw)
谢谢!
【问题讨论】:
-
什么是
temp_sn?这真的是你的实际代码吗? -
当您使用它时,
sizeof(char)根据定义为 1,因此您可以忽略它。
标签: c malloc concatenation strcat