标题:strsep 分割字符串后,如何控制只输出部分子串
只看楼主
size_t
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2020-6-5
结帖率:100%
已结贴  问题点数:20 回复次数:4 
strsep 分割字符串后,如何控制只输出部分子串
一个一百列由制表符分割的文本文件,每行读入分割后,该如何只输出第11列到最后一列的内容呢?
先谢谢大家!

程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <regex.h>


int main(int argc,const char *argv[])
{
        FILE *fp;
        size_t len = 0;
        char *str = NULL;
        ssize_t read;
        
        // reg compile 
        regex_t reg;
        const char *pat = "^##";
        int cflags = REG_EXTENDED | REG_NEWLINE;
        int ret = regcomp(&reg,pat,cflags);
        char err_info[256];

        // search
        const size_t nmatch = 1;
        regmatch_t pmatch[nmatch];

        if(argc != 2)
        {
                fprintf(stderr,"usage: %s <src>\n",argv[0]);
                exit(1);
        }

        if((fp=fopen(argv[1],"r")) == NULL)
        {
                perror("fopen()");
                exit(1);
        }
        
        if(ret!=0)
        {
                regerror(ret,&reg,err_info,256);
                fprintf(stderr,"%s\n",err_info);
                regfree(&reg);
                exit(1);
        }
        char *line = NULL;
        while((read = getline(&str,&len,fp)) != -1)
        {
                str[read-1]='\0';
                int reg_res=regexec(&reg,str,nmatch,pmatch,0);
                if(reg_res == 0)
                        continue;
                
                while((line = strsep(&str,"\t")) != NULL)
                {
                        fprintf(stdout,"%s-->",line);    ## 就是这里不知道该怎么处理了
                }
                printf("\n");

        }
        regfree(&reg);
        fclose(fp);

        exit(0);
}
搜索更多相关主题的帖子: reg include 分割 int str 
2020-06-05 22:32
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:10 
指到第10个'\t'后输出
2020-06-06 07:39
size_t
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2020-6-5
得分:0 
回复 2楼 吹水佬
能明白您的意思,具体的话如何操作呢,能指点下么?谢谢!
2020-06-06 13:17
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:10 
以下是引用size_t在2020-6-6 13:17:00的发言:

能明白您的意思,具体的话如何操作呢,能指点下么?谢谢!

strchr()指到那个'\t',接下sscanf()一串串取到尾。

2020-06-06 14:52
size_t
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2020-6-5
得分:0 
回复 4楼 吹水佬
2020-06-06 16:11



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-501978-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.135227 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved