C语言-文件操作-10
📅 2026/8/1 21:27:13
👁️ 阅读次数
📝 编程学习
题目:
编写一个程序,可以用使用命令行参数或提示用户输入文件名。
a.该程序以这样的顺序打印:打印第一个文件的第一行,第二个文件的第一行,第一个文件的第二行,第二个文件,以此类推,打印到行数较多文件的最后一行。
b.修改该程序,把行号相同的行打印成一行
源代码:
#include <stdio.h> #include <stdlib.h> #include <string.h> #define LINE_SIZE 256 int main(int argc,char * argv[]){ char *line_one = (char *)malloc(LINE_SIZE * sizeof(char)); char *line_two = (char *)malloc(LINE_SIZE * sizeof(char)); int first_end = 1; FILE * fp1,*fp2; if((fp1 = fopen(argv[1],"r")) == NULL){ fprintf(stderr,"Open %s failed\n",argv[1]); exit(EXIT_FAILURE); } if((fp2 = fopen(argv[2],"r")) == NULL){ fprintf(stderr,"Open %s failed\n",argv[2]); exit(EXIT_FAILURE); } printf("Print the line one bye one.\n"); int i = 1; while(fgets(line_one,LINE_SIZE,fp1) != NULL){ if(fgets(line_two,LINE_SIZE,fp2) != NULL){ printf("File 1 LINE NO.%d: %s\n",i,line_one); printf("File 2 LINE NO.%d: %s\n",i,line_two); i++; } else{ printf("File 1 LINE NO.%d : %s\n",i,line_one); i++; } } while(fgets(line_two,LINE_SIZE,fp2) != NULL) printf("File 2 LINE NO.%d : %s\n",i++,line_two); i=1; rewind(fp1); rewind(fp2); printf("Print the combine line.\n"); rewind(fp1); rewind(fp2); i = 1; while(fgets(line_one,LINE_SIZE,fp1) != NULL){ if(fgets(line_two,LINE_SIZE,fp2) != NULL){ printf("LINE NO.%d :\n",i); while(*line_one != '\n') putchar(*line_one++); putchar('+'); printf(" %s\n",line_two); i++; } else{ printf("LINE NO.%d : %s\n",i,line_one); i++; } } while(fgets(line_two,LINE_SIZE,fp2) != NULL) printf("LINE NO.%d : %s\n",i++,line_two); fclose(fp1); fclose(fp2); printf("打印结束\n"); return 0; }演示效果:
如果朋友你感觉文章的内容对你有帮助,可以点赞,关注文章和专栏以及关注我哈,嘿嘿嘿我会定期更新文章的,谢谢朋友你的支持哈
编程学习
技术分享
实战经验