Pointer sur un fichier FILE *
Bonjour, voila mon probleme, je lis un fichier caractare par caractere jusqu'a la fin du fichier :
Code:
while((c=fgetc(fichier))!=EOF)
Lorsque j'ai recuperer le mot que je cherchais
Code:
strcmp(find,"ServerName")==0;
, la chaine de caractere char find etant obtenur par while(c!=0x20){ find[i++]=c;} je souhaite me placer 2 caractere apres le fameux "ServerName" dans le fichier. J'ai essayer avec un pointeur int *ptr=&c; puis *ptr+=2; mais ceci ne marche pas (car bien sur il increment la valeur de c et non le caractere lu). Si quelqu'un a une solution... Merci
Re: Pointer sur un fichier FILE *
Citation:
Envoyé par Biou Pink Powa
je lis un fichier caractère par caractère jusqu'à la fin du fichier :
Code:
while((c=fgetc(fichier))!=EOF)
Lorsque j'ai recuperé le mot que je cherchais
Code:
strcmp(find,"ServerName")==0;
, la chaine de caractere char find etant obtenur par
Code:
while(c!=0x20){ find[i++]=c;}
je souhaite me placer 2 caractere apres le fameux "ServerName" dans le fichier. J'ai essayé avec un pointeur
puis
mais ceci ne marche pas (car bien sur il increment la valeur de c et non le caractere lu).
Si j'ai bien compris, tu cherches à atteidre le caractère du fichier situé 2 caractères après avoir trouvé 'ServerName'.
Si c'est un fichier binaire (suite de bytes sans organisation précise), je ne vois guère que la méthode de la machine à états pour t'en sortir proprement. L'évènement étant le caractère lu. Pas trivial, mais faisable.
Si c'est un fichier texte, c'est plus simple. Il est donc organisé en lignes (séquences de caractères terminées par '\n' ou la fin de fichier). Dans ce cas, il faut lire les lignes une par une, (fgets()), chercher dans chaque ligne la présence de 'ServerName'
Code:
char *p = strstr (sline, "ServerName");
Si p est non NULL, ce que tu cherches se trouve à l'index
Code:
size_t i = strlen ("ServerName") + 2
par rapport à p, c'est à dire p[i].
Il faut évidemment s'assurer qu'il y a bien quelquechose à cet index.
Code:
if (strlen (p) >= i)
à une vache près (+/- 1). Je te laisse coller les morceaux et faire la mise au point...
Nota : Ne pas utiliser 0x20 si tu parles du caractère espace (SPC), mais plutôt la notation portable ' '. Mieux encore, la fonctions isspace() (<ctype.h>) permet de déterminer si un caractère est SPC ou TAB.