首页 > 技术文章 > 如何改变输出方式(让printf输出结果保存到TXT文本中)

wuyuenini 2018-04-28 10:11 原文

查阅相关资料,汇总如下:

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 
 4 int main()
 5 {
 6     char money= 's';
 7     char a ='w';
 8     char b ='e';
 9     char day='t';
10     
11     FILE *fp = fopen("a.txt", "a+");//打开并在指定地点创建只写文件。
12         /*
13             FILE *fp = fopen("路径","写入模式");
14             "w"  =>  创建并写入(覆盖式写入)
15             "a"  =>  创建并写入(接续式写入)
16             "a+" =>     创建并写入(分行式写入)
17 */
18     
19         fprintf(fp,"%c,%c,%c,%c,%c\n",money,a,b,b,day);//使用fprintf  将输出端口变更为 文档
20         fclose(fp);//关闭指定文件
21     
22     return 0;
23 }
欢迎参考

实例分析:

需求:让用户输入学员的姓名、年龄,
        并把这些信息按照如下格式,保存到文件 students.txt
        例: 
            姓名:刘备   年龄:38
            姓名:张飞   年龄:35 

 1 #include <stdio.h>
 2  
 3 int main(){
 4     char name[32];
 5     int age;
 6     FILE *file;
 7     char c;
 8     
 9     file = fopen("students.txt","w");
10     if(!file){
11         printf("文件打开失败\n");
12         return 1;
13     }
14     
15     /*
16         分析:
17             用户输入: 
18                         Rose
19                         31
20             输入缓冲区:
21                         'R'  'o'  's'  'e'  '\n'  '31'  '\n'
22             当缓冲区的数据存入数组后,输入缓冲区内还存留'\n',%d默认跳过读到整数
23     */
24     
25     while(1){
26         //提示用户输入
27         printf("请输入学员姓名:");
28         scanf("%s",name);//Rose
29         
30         printf("请输入%s的年龄:",name);
31         scanf("%d", &age);//31
32             
33         //按照指定格式保存到文件
34         fprintf(file,"姓名:%s\t年龄:%d\n",name,age);
35         
36         //清空输入缓冲区
37         fflush(stdin);//fflush 刷新
38         /*或者:
39         while((c=getchar()) != '\n');
40         */
41         
42         printf("还需要继续输入吗?Y/N\n");
43         scanf("%c", &c);//如没有清空输入缓冲区,将读取了以前残留的'\n'
44         if(c == 'y' || c == 'Y'){
45             continue;//继续输入
46         }else{
47             break;
48         }
49     }
50     
51     fclose(file);
52     
53     return 0;
54 }

fprintf 往文件中写格式化数据
    函数原型:
        #include <stdio.h>
        int  fprintf( FILE *stream,  const char *format, ... );
    Demo1:

1 #include <stdio.h>
2  
3 int main(){
4             //格式字符串
5             fprintf(file,"name:%s,age:%d\n","zhangshan","25");
6             return 0;
7         }

Demo2:

 1 while(1){
 2             //提示用户输入
 3             printf("请输入学员姓名:");
 4             scanf("%s",name);//Rose
 5             
 6             printf("请输入%s的年龄:",name);
 7             scanf("%d", &age);//31
 8             getchar();//将多余回车符读取掉
 9             
10             //按照指定格式保存到文件
11             fprintf(file,"姓名:%s\t年龄:%d\n",name,age);
12             
13             printf("还需要继续输入吗?Y/N\n");
14             scanf("%c", &c);//如没有添加getchar,将读取了以前残留的'\n'
15             if(c == 'y' || c == 'Y'){
16                 continue;//继续输入
17             }else{
18                 break;
19             }
20         }

 

版权声明: 伍悦匿匿

推荐阅读