在不同函数

时间:2016-12-06 22:56:24

标签: c

我目前正在处理文件并对其进行排序。到目前为止,我可以打开文件并读取每一行。现在我试图将每一行分成特定的部分。唯一的问题是我的函数叫做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;

}

1 个答案:

答案 0 :(得分:2)

从您的函数中删除printf()free()free()realloc()不应该在其中使用,因为line可能来自非malloc的内存块。从convertLine()拨打main(),然后打印line字符串的内容。然后,如果使用malloc / realloc分配字符串,则可以重新分配和/或释放字符串。