C语言将记录写入文件中并进行读取记录按关键字搜索例子

#C语言将记录写入文件中并进行读取记录按关键字搜索例子
##题目

;/*键盘输入10组商品信息,包括产地,名称,保存到d:prod.txt里.
 * 键盘输入一个地名,读取文件,找到所有此地生产的商品信息并输出.
 */

##个人体会:
1.利用每条记录中的分隔符,进行拆分并拼接,注意Remove the ‘\n’,at the end of each record.
2.注意拼接时,间隔的字节数,指针很好用,可以精确到每个字节.
3.中文记录运行正常.
4.体会到最简易的搜索方法.
5.C语言的拼接方法不如python中的更易于直接使用,尤其是python进行多级dict的层序遍历时。
6.没有找到类似strcpy中可以按地址加上字节数的方法进行string复制,有待改进.
没有去掉原来注释掉的部分,为了以后有更多的思考.
7.测试环境codelite v16.0.0.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct product_st
{
    char name[20];
    char place[20];
}Prdct;

int main(int argc, char *argv[])
{
    enum {N = 4};
    Prdct prdt[N];
    int i;
    
    FILE *fp;
    fp = fopen("D:\\prod.txt","w");
    
    if(fp == NULL)
    {
        fprintf(stderr,"open() failed!");
        exit(1);
    }
    
    for(i = 0; i < N; i&
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,让我来帮你解决这个问题。 以下是一个示例程序,它可以读取一个包含关键字的文件,并将其替换为指定的新文本,并将结果写入另一个文件。 ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_LINE_LENGTH 1024 int main(int argc, char *argv[]) { if (argc != 4) { printf("Usage: %s <input_file> <output_file> <keyword>\n", argv[0]); return 1; } // 打开输入文件和输出文件 FILE *in_file = fopen(argv[1], "r"); if (in_file == NULL) { printf("Cannot open input file %s.\n", argv[1]); return 1; } FILE *out_file = fopen(argv[2], "w"); if (out_file == NULL) { printf("Cannot open output file %s.\n", argv[2]); fclose(in_file); return 1; } char keyword[MAX_LINE_LENGTH]; snprintf(keyword, MAX_LINE_LENGTH, "%s", argv[3]); char line[MAX_LINE_LENGTH]; while (fgets(line, MAX_LINE_LENGTH, in_file) != NULL) { char *pos = strstr(line, keyword); // 寻找关键字 if (pos != NULL) { // 发现关键字 // 获取关键字后面的内容 char *content = pos + strlen(keyword); // 替换为新文本 char *new_content = "替换的新文本"; fprintf(out_file, "%.*s%s", (int)(pos - line), line, new_content); fprintf(out_file, "%s", content); } else { // 没有发现关键字,直接写入原来的内容 fprintf(out_file, "%s", line); } } fclose(in_file); fclose(out_file); return 0; } ``` 这个例子假设输入文件只有一行包含关键字。如果要处理多行或多个关键字,需要进行更复杂的逻辑。 在实际应用,您可以根据实际情况更改该代码,以适应您具体的文件读取和替换文本的需求。 希望这个例子对您有帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值