2013-10-08 9 views
0

안녕하세요. 저는 데이터 행을 반환하고 String으로 반환하는 함수를 작성하려고합니다. 아래는 내 코드이며, 왜 작동하지 않는지 잘 모르겠습니다. 나는 printf 함수를 추가했고 함수를 호출 할 때 아무것도 출력하지 않습니다.strcat in C가 작동하지 않습니다.

EDIT (아직 답변하지 못해서) - 답장을 보내 주셔서 감사합니다. char c를 char * c로 변경하면 여전히 작동하지 않습니다. 문자열을 읽고 문자열을 반환하면됩니다. 변수 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

안녕하십니까. –

5

const char * 그것은 매우 효율적 아니지만, 당신이 원하는 일을해야 strcat documentation