我有一個函數,讀取文件(來自stdin),讀取前3行並連接它們。C編程 - 在valgrind中使用strcat()導致錯誤
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'?這真的是你的實際代碼? – 2014-11-03 20:26:54
當你在它的時候,'sizeof(char)'的定義是1,所以你可以不要這樣做。 – 2014-11-03 20:40:58