C文件顶部的新行

时间:2014-02-04 21:17:19

标签: c file newline fgets

#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会读取一个新行。我很好。

问题是我在我创建的文件顶部还有一个换行符,我不知道为什么。

我很感激任何言论。感谢

2 个答案:

答案 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) ) .........