2013-10-08 2 views
0

Salut tout J'essaie d'écrire une fonction qui retourne la ligne de données et la renvoie dans une chaîne. Ci-dessous est mon code et je ne sais pas pourquoi ça ne marche pas. J'ai ajouté une fonction printf et quand j'appelle la fonction rien ne s'imprime.strcat en C ne fonctionne pas

EDIT (parce que je ne peux pas encore répondre) - Merci pour vos réponses. Quand je change char c en char * c ça ne marche toujours pas. J'ai juste besoin de lire la ligne dans une chaîne et le retourner.

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

Peut-être 'lineCount! = LineNum'? –

+1

Avez-vous créé un deuxième compte pour [poser à nouveau la même question] (http://stackoverflow.com/q/19260200/596781)? –

+0

Non c'est mon premier compte – Boyo

Répondre

0

Il est pas très efficace, mais il faut faire ce que vous voulez:

Notez que lineCount commence à 0. (La première ligne est ligne 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

Je viens juste de vous remercier maintenant que je suis autorisé à répondre :) – Boyo

+0

Vous êtes les bienvenus. –