Problèeme avec fscanf()

xkindool Messages postés 13 Date d'inscription dimanche 18 janvier 2004 Statut Membre Dernière intervention 18 juillet 2009 - 9 mars 2004 à 20:05
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 - 9 mars 2004 à 23:03
Désolé de poster un message pour si peu mais je n'arrive pas a débugger :/
Mon prog ne marche pas, il est simplement censé afficher les lignes d'un fichier "input".

#include <stdlib.h>
#include <stdio.h>

int main(int argc, char *argv[]){
        FILE *file;
        char *i;
        file = fopen("input","r");
        while(i!=EOF){
                fscanf(file,"%s",&i);
                printf("%s",i);
        }
        fclose(file);
}


Merci d'avance si vous pouvez m'aider.
A voir également:

3 réponses

gagah1 Messages postés 509 Date d'inscription samedi 28 juin 2003 Statut Membre Dernière intervention 3 août 2010
9 mars 2004 à 21:02
Essaie plutot ceci:

#include <stdlib.h>
#include <stdio.h>

int main(...){
FILE *file;
char *i;

file=fopen("input", "r");
while(fscanf(file, "%s", i)!=EOF){
printf("%s", i);
}
fclose(file);
}

Bonne prog!!!!!!!!!!!Tchao!
0
xkindool Messages postés 13 Date d'inscription dimanche 18 janvier 2004 Statut Membre Dernière intervention 18 juillet 2009
9 mars 2004 à 21:59
Merci mais en fait je viens de m'apercevoir que fscanf() servait à récupérer une chaine qui correspond a un mot alors que j'aurais plutot besoin de récupérer la ligne entiere du fichier. Je sais que je peux le faire avec fgets() mais il prend en compte le retour chariot qu'il y a, a la fin de chaque ligne. N'existe-t-il pas une autre fonction qui pourrait me servir ?
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
9 mars 2004 à 23:03
faut surtout allouer la chaîne de caractères :
char* i = new char[256]; // dynamique C++
ou
cjar* i = (char*)malloc(256); // dynamique C
ou
char i[256]; // static C/C++;

en ce qui concerne fgets si ca t'embête d'avoir le retour chariot à la vin, tu le vire :
int len=strlen(i);
if(i[len-1] == '\n')
i[len-1] = '\0';
0
Rejoignez-nous