#include <stdio.h>
#include <stdlib.h>
#define MAX_LENGTH 100
FILE * openFile( char * mode )
{
FILE *file;
char name[50];
printf("Enter a name of a file:\n");
scanf("%49s", name);
file = fopen(name, mode);
if( ! file )
{
printf("Error opening the file.\n");
exit( 1 );
}
return file;
}
int main ( int argc, char * argv [] )
{
char row[MAX_LENGTH];
printf("Output file:\n");
FILE *output = openFile("w");
while( fgets(row, MAX_LENGTH, stdin) ) /*Stops with EOF (ctrl+d - Unix, ctrl+z - Windows)*/
{
fputs(row, output);
}
fclose(output);
return 0;
}
Hello上面的代码应该从stdin获取字符串并将其写入文件。
我知道当我按回车键时,fgets会读取一个新行。我很好。
问题是我在我创建的文件顶部还有一个换行符,我不知道为什么。
我很感激任何言论。感谢
答案 0 :(得分:0)
你可以做的就是将指针移动到文件的开头。
void rewind(FILE *stream);
它相当于
fseek(stream, 0L, SEEK_SET);
您可以查看此帖子:Does fseek() move the file pointer to the beginning of the file if it was opened in "a+b" mode?
答案 1 :(得分:0)
Abhi感谢您的信息。我做了一些研究,这个功能完成了这项工作。
void flushStream( FILE * stream )
{
while( 1 )
{
int x = fgetc(stream);
if( x == '\n' || x == EOF ) break;
}
}
.....
printf("Output file:\n");
FILE *output = openFile("w");
flushStream(stdin);
while( fgets(row, MAX_LENGTH, stdin) ) .........