Comment pourrais-je réinitialiser un pointeur au début d'une entrée ou d'un fichier de ligne de commande. Par exemple, ma fonction lit une ligne dans un fichier et l'imprime en utilisant getchar ()
while((c=getchar())!=EOF)
{
key[i++]=c;
if(c == '\n' )
{
key[i-1] = '\0'
printf("%s",key);
}
}
Après avoir exécuté cela, le pointeur pointe sur EOF im en supposant? Comment pourrais-je le faire pointer à nouveau vers le début du fichier/ou même relire le fichier d'entrée
im l'entrer comme (./function <inputs.txt)
Si tu as un FILE*
autre que stdin
, vous pouvez utiliser:
rewind(fptr);
ou
fseek(fptr, 0, SEEK_SET);
pour réinitialiser le pointeur au début du fichier.
Vous ne pouvez pas faire cela pour stdin
.
Si vous devez pouvoir réinitialiser le pointeur, passez le fichier en argument au programme et utilisez fopen
pour ouvrir le fichier et lire son contenu.
int main(int argc, char** argv)
{
int c;
FILE* fptr;
if ( argc < 2 )
{
fprintf(stderr, "Usage: program filename\n");
return EXIT_FAILURE;
}
fptr = fopen(argv[1], "r");
if ( fptr == NULL )
{
fprintf(stderr, "Unable to open file %s\n", argv[1]);
return EXIT_FAILURE;
}
while((c=fgetc(fptr))!=EOF)
{
// Process the input
// ....
}
// Move the file pointer to the start.
fseek(fptr, 0, SEEK_SET);
// Read the contents of the file again.
// ...
fclose(fptr);
return EXIT_SUCCESS;
}
L'entrée redirigée/redirigée ne fonctionne pas comme ça. Vos options sont: