Ответ 1
Если у вас есть FILE*
кроме stdin
, вы можете использовать:
rewind(fptr);
или
fseek(fptr, 0, SEEK_SET);
to reset указатель на начало файла.
Вы не можете сделать это для stdin
.
Если вам нужно reset указатель, передать файл в качестве аргумента в программу и использовать fopen
, чтобы открыть файл и прочитать его содержимое.
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;
}