C中的strcat无法正常工作

时间:2013-10-08 23:40:35

标签: c strcat

大家好我正在尝试编写一个返回数据行并在String中返回的函数。下面是我的代码,我不知道为什么它不起作用。我添加了一个printf函数,当我调用该函数时,没有打印出来。?

编辑(因为我还不能回答) - 感谢您的回复。当我将char c更改为char * c时,它仍然无效。我只需要将该行读入一个字符串并返回它。

char* getLine(FILE *file, int lineNum){

    char c;
    int lineCount=0, size = 1;
    char *line = NULL;
    line = malloc(sizeof(char)*size);
    while ((c=getc(file)) != EOF){

        if (c=='\n'){
            ++lineCount;
            continue;
        }
        if (lineCount==lineNum){
            size += 1;
            line = realloc(line, size*sizeof(char));
            strcat(line, c);
            printf("Line: %s\n", line);
        }
    }
    return line;
}

2 个答案:

答案 0 :(得分:5)

变量c不属于const char *类型 见strcat documentation

答案 1 :(得分:0)

效率不高,但它应该做你想做的事情:

请注意,lineCount从0开始。(第一行是第0行)。

char* getLine(FILE *file, int lineNum){
    char c;
    int lineCount=0, size = 0; // start size at zero, not one
    char *line = NULL;

    while ((c=getc(file)) != EOF){
        if (lineCount==lineNum){
            size += 1;
            if(line == NULL) {
                line = calloc(sizeof(char), size); 
            } else {
                line = realloc(line, size*sizeof(char));
            }
            char ac[2] = { c, 0 }; // this line is new
            strcat(line, ac); // ac is new here
            printf("Line: %s\n", line);
            if(c == '\n') {
                return line;
            }
        }
        if (c=='\n'){
            ++lineCount;
        }
    }
    printf("Could not find line %d\n", lineNum);
    return NULL;
}