2013-10-08 39 views
0

大家好我試圖編寫一個函數,返回的數據行並返回一個字符串。下面是我的代碼,我不確定它爲什麼不起作用。我已經添加了printf函數,當我調用函數時,什麼都不打印出來。?strcat在C不工作

編輯(因爲我還不能回答) - 謝謝你的回覆。當我將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; 
} 
+1

也許'lineCount!= lineNum'? –

+1

你剛剛做了第二個帳戶[再次問同樣的問題](http://stackoverflow.com/q/19260200/596781)? –

+0

不,這是我的第一個帳戶 – Boyo

回答

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; 
} 
+0

剛回來說謝謝,現在我可以回覆:) – Boyo

+0

不客氣。 –