我目前正在处理文件并对其进行排序。到目前为止,我可以打开文件并读取每一行。现在我试图将每一行分成特定的部分。唯一的问题是我的函数叫做convertLine()当我用printf打印行(“%s \ n”,行);它打印出我想要的。但是我需要将它打印在main中,而不是在从main调用的函数convertLine()中打印。这是我的convertLine()函数:
void convertLine(char line[401], int *number, char fileLine[401])
{
char firstNum[2] = { fileLine[6] };
char secondNum[2] = { fileLine[7] };
char thirdNum[2] = { fileLine[8] };
char colonChar[2] = { fileLine[9] };
char fullMark[7] = { "" };
int length = 0;
length = strlen(fileLine);
++length;
line = (char*)malloc(length);
strcpy(fullMark, firstNum);
strcat(fullMark, secondNum);
strcat(fullMark, thirdNum);
*number = atoi(fullMark);
if (strstr(secondNum, ":")) //this works
{
strcpy(line, &fileLine[7]);
}
else if (strstr(secondNum, ":"))
{
strcpy(line, &fileLine[8]);
}
else
{
strcpy(line, &fileLine[9]);
}
printf("%s \n", line); //i want to be able to do this in main
length = strlen(line);
++length;
line = (char *)realloc(line, length);
free(line);
return;
}
答案 0 :(得分:2)
从您的函数中删除printf()
和free()
。 free()
和realloc()
不应该在其中使用,因为line
可能来自非malloc的内存块。从convertLine()
拨打main()
,然后打印line
字符串的内容。然后,如果使用malloc / realloc分配字符串,则可以重新分配和/或释放字符串。