alex_bn_lee

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

【415】C语言文件读写

A program can open and close, and read from, and write to, a file that is defined by the user

This is generally done when you have

  • large volumes of stored data, or
  • complex data (such as structs) or
  • non-printable data

These don't happen often. Nevertheless, for the sake of completeness, here is a program that

  • reads a number from a file input.txt

  • writes the count from 1 to that number to the file output.txt

    • it is user-friendly :) : it tells the user that an output file has been created

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// files.c
// read a number 'num' from a file input.txt
// write a count from 1 to 'num' to the file OUT
 
#define IN  "input.txt"
#define OUT "output.txt"
 
#include <stdio.h>
#include <stdlib.h>
 
#define NUMDIG 6 // size of numerical strings that are output
 
int main(void) {
   FILE *fpi, *fpo; // these are file pointers
   char s[NUMDIG];
 
   fpi = fopen(IN, "r");
   if (fpi == NULL) { // an important check
       fprintf(stderr, "Can't open %s\n", IN);
       return EXIT_FAILURE;
   }
   else {
       int num;
       if (fscanf(fpi, "%d", &num) != 1) { // an important check
           fprintf(stderr, "No number found in %s\n", IN);
           return EXIT_FAILURE;
       }
       else {
           fclose(fpi); // don't need the input file anymore
           fpo = fopen(OUT, "w");
           if (fpo == NULL) { // an important check
               fprintf(stderr, "Can't create %s!\n", OUT);
               return EXIT_FAILURE;
           }
           else { // got input and got an output file
               fprintf(fpo, "%s", "Counts\n");
               for (int i=1; i<=num; i++) {
                   sprintf(s, "%d", i);
                   fprintf(fpo, "%s\n", s);
               }
               fclose(fpo);
               printf("file %s created\n", OUT);
               return EXIT_SUCCESS;
           }
       }
   }
}

input.txt

1
 

output.txt

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
prompt$ dcc files.c
prompt$ ./a.out
file output.txt created
prompt$ more output.txt
Counts
1
2
3
4
5
6
7
8
9
10
11
12
13

 

posted on   McDelfino  阅读(283)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2012-06-25 【053】我对*.ico文件的理解
点击右上角即可分享
微信分享提示