昨天看到关注的一个微信主页上面出了一个小的编程题,今天早晨起来没事,就做了一下。问题其实很简单,但是我觉得正好可以借此机会回顾一下C文件读取的概念和方法,所以就做了一下,也记录一下。

题目

有一个文件data.txt,里面有如下数据:

[A]0123 [B]0003 [C]1000 [D]0056

需要输出成如下格式:

A 123
B 3
C 1000
D 56

我的程序

源代码:

/*
* =====================================================================================
*
*       Filename:  data.c
*
*    Description:  处理data.txt里面的数据
*
*        Version:  1.0
*        Created:  02/21/2014 06:18:45 PM
*       Revision:  none
*       Compiler:  gcc
*
*         Author:  Allan Ni (Allan), allan.vim@gmail.com
*   Organization:  https://niyanchun.com
*
* =====================================================================================
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define MAXLINE 1024

int main() {
    char str[MAXLINE];
    FILE *fp;

    if ((fp = fopen("data.txt", "r")) == NULL) {
        printf("Open file error\n");
        return -1;
    }

    if (fgets(str, MAXLINE, fp) != NULL) {
        char *p = str;
        char ch, temp[5];

        while ((*p) != '\n') {
            
            if ((*p) == '[') {
                ch = *(p + 1);
                strncpy(temp, p+3, 4);
                temp[4] = '\0';
                printf("%c %d\n", ch, atoi(temp));
                p += 7;
            }
            else {
                p++;
            }
        }
    }

    return 0;
}