Je souhaiterai enregistrer une chaine de caractere avec des espaces, comment dois je m'y prendre?.
merci
Version imprimable
Je souhaiterai enregistrer une chaine de caractere avec des espaces, comment dois je m'y prendre?.
merci
Que veux tu dire par "enregistrer"?
Ton post est sur scanf, je suppose que tu veux récupérer une chaine saisie au clavier:
Code:
1
2 gets(ch);
oui tout a fait, mais avec les espaces !
OK c'est bon, c'est la fonction qui me convient
merci
Vu que la question parlait de la fonction scanf(), je pense qu'il voulait ça comme réponse :
Comme ca , le retour a la ligne (\n) ne sera pas interpréter comme validation de la valeur mais bien comme un char ...Code:scanf("%[^\n]", ta_chaine) ;
Mais il et déconseillé d'utiliser scanf, et il faut lui preferer :
et non pas gets pour des raisons deja évoquées.Code:fgets(chaine, taille, stdin);
Nas'
Et pour prendre en compte le changement de ligne ?
Par exemple je veux recuperer les chiffres de la premiere ligne, de la deuxieme tout en mettant a jour un ptit drapeau pour dire je suis a la ligne 2 ...
Comment completer ca ?Code:
1
2
3
4 int i, flag; while(!feof(*file)){ fscanf(*file,"%d",&i); ....}
freif'
J'ai pas compris exactement le problème.
Tu veux lire dans un fichier les données qui sont sous la forme :
01 // les deux premiers chiffres
42 // deux autres chiffres sur une seconde ligne
C'est bien ca?
scanf() lit une seule ligne (je pense) , pas plus.
Si c'est dans un fichier, tu peux tout simplement utiliser la fonction :
... qui lit ligne par ligne le fichier.Code:fgets(char* s, TAILLE , FILE* stream);
C'est plutot :Citation:
Code:while(!feof(*file)){
...Code:while(!feof(file))
Nas'
Le feof prend le pointeur vers le fichier.
Je fais ca:
Ca m'embete juste de devoir faire un getc "inutile"...Code:
1
2
3
4
5
6
7
8
9
10
11
12 do{ fscanf(fp,"%d",&c); fin_ligne = getc(fp); if(flag == 0){ first_c = c; flag = 1; } else { ....fonction blabla ... if(fin_ligne == '\n') flag = 0; } } while(!feof(fp));
freif'