C 以二进制模式读取文件

C 以二进制模式读取文件,c,binary,fopen,C,Binary,Fopen,我不熟悉从文件中读取数据。我尝试从文本文件中获取数据,并使用以下代码打印它们。但我得到的只是垃圾值。它必须键入以下数据 12 13 14 代码 void main() { FILE *fp; int a=0; fp=fopen("try.txt","rb"); fseek(fp,0,SEEK_END); long int size=ftell(fp); fseek(fp,0,SEEK_SET); for(int i=0;i<size;

我不熟悉从文件中读取数据。我尝试从文本文件中获取数据,并使用以下代码打印它们。但我得到的只是垃圾值。它必须键入以下数据

12 13 14

代码

void main()
{
    FILE *fp;
    int a=0;
    fp=fopen("try.txt","rb");
    fseek(fp,0,SEEK_END);
    long int size=ftell(fp);
    fseek(fp,0,SEEK_SET);
    for(int i=0;i<size;i++)
    {
        fread(&a,sizeof(int),1,fp);
        printf("%d\t",a);
    }
    fclose(fp);
    getch();
}

<>我阅读了与FRAD相关的其他答案,但我仍然不能理解这个问题。我使用Visual C++ 2010 Express < /P> < P>不要把它当作二进制。请尝试以下代码:

int main() // note: int
{
 FILE *fp;
 int a=0;
 fp=fopen("try.txt","rb");
 fseek(fp,0,SEEK_END);
 long int size=ftell(fp); // now you got size of file in bytes
 fseek(fp,0,SEEK_SET);    // same as rewind(fp)
 for(int i=0;i<size;i++)
 {
    fread(&a,sizeof(int),1,fp); // you read one int (sizeof(int)!=1 byte)
    printf("%d\t",a);
  }
  fclose(fp);
  getch();
  return 0; // since int main()
}
int no;
std::ifstream fin("try.txt", std::ios::in|std::ios::beg);
if(!fin)
{
    std::cout<<"Cannot open for reading\n";
    return;
}
while(fin>>no)
{
    std::cout<<no<<std::endl;
}
int-no;
std::ifstream fin(“try.txt”,std::ios::in | std::ios::beg);
如果(!fin)
{
标准:库特诺)
{

Std::CUCT+++还是C?这看起来比C++多了。为什么你要从文本文件中读取二进制文件?这是不可能的。从文本文件中读取文本,从二进制文件中读取二进制文件。首先要了解二进制和文本之间的区别。第二件事是要了解你的文件是否真的是文本文件。一个二进制文件。如下操作,在文本编辑器(如记事本)中打开文件,你能看到数字12、13和14吗?如果是,那么它是一个文本文件,不应该试图读取二进制文件。这实际上取决于文件中的数据是什么。如果是文本数字,那么这样读取是不起作用的。但我的目标是通过修改上述程序来读取文本文件中的大量可用数据o只是我试着用二进制模式读取它,很抱歉……但我仍然得到相同的输出……而且它读取的元素比文件中的元素多。它int在文件中吗?在你的问题中,你写的是一个二进制文件,你打开并读取它,但文件是如何创建的,你是从控制台创建的还是用一个使用例如
f的程序创建的写入(&a,sizeof(int),1,fp)
在编写二进制文件时,最好使用定义良好的数据类型,int不是这样的数据类型,因为大小取决于操作系统。实际上,我从matlab创建了文件,并以.bin和.txt两种格式存储了它。但我在使用这两种文件时都遇到了上述错误。一种公认的做法是,当文件扩展名为.txt时s是一个可读的文件,例如,使用记事本/vi或您使用的任何文本编辑器,在这种情况下,使用fread读取它不是一种方法,而使用fgets/fgetc更合适。
for (int i = 0; i < size/sizeof(int); ++i)
{
...
}
int main() 
{
 FILE *fp;
 int a=0;
 fp=fopen("try.txt","rb");
 if ( fp != NULL )
 {
   do
   {
     a = fgetc(pFile); // read one character
     if ( a != EOF ) putchar( a );
   }
   while ( a != EOF );
 }

 fclose(fp);
 getch();
 return 0; 
}
int no;
std::ifstream fin("try.txt", std::ios::in|std::ios::beg);
if(!fin)
{
    std::cout<<"Cannot open for reading\n";
    return;
}
while(fin>>no)
{
    std::cout<<no<<std::endl;
}