简体   繁体   English

C - 从文件中读取

[英]C - Reading from a file

I have a text file containing the following:我有一个包含以下内容的文本文件:

ANT. Small insect,  
sometimes has wings on its back.

BEAR. Large beast.

I have ac program:我有交流程序:

int main(void)
{
   FILE *fp;
   int c;

   fp = fopen("myfile.txt","r");
   if(fp == NULL) 
   {
      perror("Error in opening file");
      return(-1);
   } do {
      c = fgetc(fp);
      if(feof(fp))
         break ;
    if (c != '\n')
        printf("%c", c);
   }while(1);

   fclose(fp);
}

However it only prints:但是它只打印:

BEAR. Large beast.

I want it to print:我希望它打印:

ANT. Small insect, sometimes has wings on its back.  
BEAR. Large beast.

Text files created on DOS/Windows machines have different line endings than files created on Unix/Linux.在 DOS/Windows 机器上创建的文本文件与在 Unix/Linux 上创建的文件具有不同的行尾。 DOS uses carriage return and line feed ("\\r\\n") as a line ending, which Unix uses just line feed ("\\n"). DOS 使用回车和换行(“\\r\\n”)作为行尾,而 Unix 只使用换行(“\\n”)。 You need to be careful about transferring files between Windows machines and Unix machines to make sure the line endings are translated properly.在 Windows 机器和 Unix 机器之间传输文件时需要小心,以确保行尾正确翻译。

Read More 阅读更多

/*Everything looks find in your code. in my machine it is working fine . I have only added a if condition to print the contents same as the file thats it .. */

#include<stdio.h>

int main(void)
{
   FILE *fp;
   int c;

   fp = fopen("rabi.txt","r");
   if(fp == NULL)
   {
      perror("Error in opening file");
      return(-1);
   } do {
      c = fgetc(fp);
      if(feof(fp))
         break ;

        printf("%c", c);

        printf ("\n");
   }while(1);
printf ("\n");
   fclose(fp);
}


o/p-->
rabi@rabi-VirtualBox:~/rabi/c$ gcc 11.c 
rabi@rabi-VirtualBox:~/rabi/c$ ./a.out 
ANT. Small insect,
sometimes has wings on its back.

BEAR. Large beast.

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM