c语言-C语言 用fgets()或fscanf()分别读取两个文件流出错

问题描述

C语言 用fgets()或fscanf()分别读取两个文件流出错

C Primer Plus第十三章第7题a:编写一个打开两个文件的程序,让程序打印第一个文件的第一行,第二个文件的第一行,第一个文件的第二行,第二个文件的第二行,以此类推,直到打印完行数较多的文件的最后一行。
我尝试在while循环中用两个fgets()分别读取两个文件的一行,然后用fputs()打印,结果出来一堆“烫”(乱码),文件的正确内容也参杂在其中。以下是部分程序代码和截图(两个文件中的内容分别是A(回车)C E; B D F)

    while((fscanf(fp1, "%s", &first) == 1 && first[0] != '') ||
          (fscanf(fp2, "%s", &second) == 1 && second[0] != ''))
    {
        puts(first);
        puts(second);
    }


网上的答案中用的是getc逐字符读取,难道不能逐行或逐单词读取吗?

解决方案

可能是写和读的编码不一样吧

时间: 2024-09-17 13:39:30

c语言-C语言 用fgets()或fscanf()分别读取两个文件流出错的相关文章

c语言-C语言 文件读写fscanf 不能读取文件第一行

问题描述 C语言 文件读写fscanf 不能读取文件第一行 我在做USACO的训练题 按照要求写了个读文件的程序,但是出了一点我不能理解的bug 希望老师指点指点 程序: int main () { char comet[6]; char group[6]; FILE *input; input=fopen ("ride.in", "r"); fscanf (input, "%sn%s", comet, group ); \fscanf (inp

c语言-C语言怎样编写程序运行完后,不自动结束,而是返回程序的开始的主菜单?

问题描述 C语言怎样编写程序运行完后,不自动结束,而是返回程序的开始的主菜单? 我的程序运行完一个功能后按任意键就退出了,而不是返回主菜单 代码如下,应该怎么改?(具体一点,菜鸟一个)多谢! #include #include #include #include #include #define LENTEL sizeof(tel) #define ID struct tel struct tel { char name[15]; char tele[11]; char style[15]; c

代码-使用C语言1. 读取一个.C文件,删除该文件中所有的注释语句

问题描述 使用C语言1. 读取一个.C文件,删除该文件中所有的注释语句 读取一个.C文件,删除该文件中所有的注释语句.然后写入到新的.C文件里. 要求: 删除注释语句功能采用动态链接库形式 在功能实现的基础上: --单元测试要足够充分 --要通过所有的MISRA C的检查 --代码要符合代码规范. 解决方案 #include int main() { FILE *fp,*fp1; char str[99]=""; int i=0; fp=fopen("test.c"

C语言及程序设计进阶例程-2 一个程序,多个文件

贺老师教学链接  C语言及程序设计进阶 本课讲解 演示:建立多文件的项目main.c #include <stdio.h> int max(int x,int y); int main( ) { int a,b,c; printf("输入两数:"); scanf("%d %d", &a, &b); c=max(a,b); printf("max=%d\n", c); return 0; } max.c int max(

win7如何更改语言 电脑语言改成英文的方法

今年evad3rs团队发布的iOS 7完美越狱工具有些特殊,中国版iOS7完美越狱工具中,捆绑有太极助手插件,此插件类似流氓插件,容易导致iOS越狱设备出现白苹果现象(国外版无此插件).目前比较好的解决办法是:在使用电脑中越狱的时候,将电脑语言改为英文,可绕过该插件.但很多电脑小白用户还不知道如何更改电脑语言,因此本文将为大家详细介绍下电脑语言更改教程. 如何更改电脑语言 电脑语言改为英文方法 以下笔者以Windows 7系统截图演示,教大家如何更改电脑语言.其他XP或者Win8系统设置方法与此

c语言-C语言递归的内存释放问题

问题描述 C语言递归的内存释放问题 我用C语言实现alpha-beta极小极大算法来做一个棋类游戏的AI,博弈树是用递归的方式构造的,然后发现AI每下一步程序的内存都在增大,原来是因为递归没有释放内存. 耗内存的指针是棋盘 char ** chessboard; 于是我在递归函数的每一个return之前都把 chessboard 给释放了,发现内存还是一直在涨,求解.. 解决方案 把递归函数实现贴出来. 解决方案二: 估计释放的不全.二级指针要分两级释放. 解决方案三: 二级指针的释放是要分两步

c 指针-C语言 结构体指针字符 二进制文件写入和读取 指针字符输出错误

问题描述 C语言 结构体指针字符 二进制文件写入和读取 指针字符输出错误 typedef struct s{ char *name; }student; /*将结构体读出并显示*/ int IsUsed(char str) { FILE *fp = fopen("test","rb"); student s; s.name = (char) malloc(sizeof(char)*20); fread(&s,sizeof(student),1,fp); wh

c#-用C#语言怎么模拟发送post请求数据包并最终下载文件

问题描述 用C#语言怎么模拟发送post请求数据包并最终下载文件 通过一个在线工具模拟发送post请求数据包发送的内容和返回的数据见下面两张截图,问题来了,怎么根据返回的数据下载这个文件.用C#语言怎么写啊 解决方案 在浏览器中下载,同时用fiddler抓包,然后根据fiddler的结果照着模仿 解决方案二: 用FIDDLER确实可行,谢谢

c语言-C语言程序,编译没错,但执行完之后就提示错误。

问题描述 C语言程序,编译没错,但执行完之后就提示错误. #include #include #include struct st { char name[50]; int age; }info; void main(void) { struct st s[20]; char FileA[50]; FILE*fp; if((fp=fopen("e:students.txt","wt"))=NULL) { printf("打开过程中有错,请检查n"