C语言用fscanf()函数如何读取文件全部内容?

C语言用fscanf()函数如何读取文件全部内容?,第1张

void read_txt(const char* Input, const char* Output){

FILE *fin = fopen(Input, "rb")//以二进制读入

FILE *fout = fopen(Output, "w")

unsigned char ch1,ch2

while(fscanf(fin, "%c%c", &ch1,ch2) != EOF){//直到文件结束

fprintf(fout, "%d%d", ch1,ch2)//以10进制输出

}

}

int main(){

read_txt("D:/IN.txt","D:/OUT.txt")//txt文件目录

return 0

}

注:判断文件结束处的语句:fscanf(fin, "%c%c", &ch1,ch2)。其中两个%c之间不能加空格,否则读到的二进制文件会不完整,比源文件少好多个字节

#include<<a href="https://www.baidu.com/s?wd=stdio.h&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Y3my7-uhnLnW61mymYm1Td0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6K1TL0qnfK1TL0z5HD0IgF_5y9YIZ0lQzqlpA-bmyt8mh7GuZR8mvqVQL7dugPYpyq8Q1Rvn1cLP1bkPs" target="_blank" class="baidu-highlight">stdio.h</a>>

void main()

{

    int a[20000][2],i,j,count=0

    FILE *fp

    fp=fopen("d:\\1.txt","r")

     

    /**读入**/

    for(i=0i<20000i++)

    {

        if(fscanf(fp,"%d %d",&a[i][0], &a[i][1])==EOF)

            break

        count++ //count为读入的数对个数,如1  2为一对

    }

    /**输出**/

    for(i=0i<counti++)

    {

        for(j=0j<2j++)

            printf("%d ",a[i][j])

        printf("\n")

    }

    fclose(fp)  //记住关闭文件

}

运行结果如下:

fscanf()和scanf()一样,都是以白字符(<space>、<Tab>和<Enter>)作为分隔符的,就是说,当读到白字符时,就结束当前数据的读入,并将下一个数据赋给下一个变量。白字符不会当作数据的一部分赋给变量,而会被舍弃,但最后一个白字符会被保留在源数据流中。

例如

char s[20]

int a,b,c

数据文件中的数据是:

John 89 99 70<CR>

Jeo 78 99 69<CR>

用fscanf(infp,"%s%d%d%d",s,&a,&b,&c)读取时,"John"复制到s,98赋给a,99赋给b,70赋给c,最后的<CR>会保留在文件中,当下一个scanf()函数再行读入时,首先碰到<CR>,这个<CR>会被读出并丢弃,即使有多个白字符也同样被丢弃,直到读到有效数据。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12106015.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存