×

c从txt英文文件逐个读入字符

c从txt英文文件逐个读入字符的简单介绍

admin admin 发表于2023-04-04 10:42:14 浏览50 评论0

抢沙发发表评论

本文目录一览:

C语言怎么实现逐行读取指定字符串丫?

你这东西是linux环境下的东西吧。。用shell脚本,扩展了正则表达式的egrep就行了

egrep 'RX|TX' input.txt output.txt

如果是C语言的话,用readline逐行逐行读取,找到开头,读入RX当行,再读入下一行。之后同样的继续readline扫描后面字符串就行了。。

c语言中从文件中按行读取字符串,并进行相应操作。

#include "stdafx.h"

#include "stdio.h"

#define ColNum 4 //总列数

#define QCIndex (1-1) //去重列号

#define PXIndex (3-1) //排序列号

typedef struct txtnode{

struct txtnode* next;

char* col[ColNum];

} TXTNODE;

void CopyToNode(TXTNODE*node,char *buf)

{

if(!buf||!*buf) return;

int j,len = strlen(buf);

char *p = (char*)malloc(len+1);

strcpy(p, buf);

node-col[0] = p;

for(j=1; *pjColNum; p++)

if(*p=='\t')

{

*p++='\0';

if(*p) node-col[j++] = p;

}

if(jColNum) node-col[0][0] = '\0';//放弃列数不足的行

}

int findnode(TXTNODE*Head,TXTNODE*node,int colIndex)

{

if(Head)

{

for(TXTNODE*p=Head; p; p=p-next)

if(strcmp(node-col[colIndex], p-col[colIndex])==0) return 1;

}

return 0;

}

int insertNode(TXTNODE**Head,TXTNODE*node,int colIndex)

{

TXTNODE*p0,*p1;

for(p0=NULL,p1=*Head; p1; p0=p1,p1=p1-next)

{

if(strcmp(node-col[colIndex], p1-col[colIndex])=0)continue; //升序用=0 降序排则用=0

if(p0)//插在p0后p1前

{

p0-next=node;

node-next = p1;

}

else//插在开头

{

*Head = node;

node-next = p1;

}

return 0;

}

if(p0)//插在末尾 p1==NULL

{

p0-next=node;

node-next = NULL;

}

else//第一次调用 走到这里

{

*Head = node;

node-next = NULL;

}

return 0;

}

void deleteLink(TXTNODE**Head)

{

TXTNODE *p0,*p1;

p1 = *Head;

while(p1)

{

p0 = p1;

p1=p1-next;

free(p0-col[0]);

free(p0);

}

*Head = NULL;

}

void writeLink(TXTNODE*Head,FILE*wfp)

{

TXTNODE *p0=Head;

int i;

while(p0)

{

for(i=0; iColNum-1; i++)

fprintf(wfp,"%s\t",p0-col[i]);

fprintf(wfp,"%s",p0-col[i]);

p0=p0-next;

}

}

TXTNODE* readTxt(FILE*rfp)

{

char buf[10240]={0};

TXTNODE* head=NULL, *tmp;

while(!feof(rfp))

{

fgets(buf,10240,rfp);

if(!*buf) continue;

tmp=(TXTNODE*)malloc(sizeof(TXTNODE));

memset(tmp,0,sizeof(TXTNODE));

CopyToNode(tmp,buf);

if(tmp-col[0][0] !findnode(head, tmp, QCIndex))

{

insertNode(head, tmp, PXIndex);

}

else

{

free(tmp-col[0]);

free(tmp);

}

}

return head;

}

void main(int argc,char*argv[])

{

FILE *rfp,*wfp;

TXTNODE*Head = NULL;

if(argc3){printf("去重排序小程序,调用格式:\n命令名 源文件 目标文件");exit(-1);}

rfp = fopen(argv[1],"rb");

if(rfp==NULL){printf("源文件[%s]打不开",argv[1]);exit(-2);}

wfp = fopen(argv[2],"wb");

if(wfp==NULL){fclose(rfp);printf("目标文件[%s]打不开",argv[2]);exit(-2);}

Head = readTxt(rfp);

writeLink(Head,wfp);

fclose(rfp);

fclose(wfp);

deleteLink(Head);

printf("处理完毕!\n");

}

//VC7下调试运行通过,功能正常 方便改造

//我闲得蛋痛了,花一两小时时间给你做这小程序(调试费了好一会才通过),没有分送,大大的不值

用c语言读取一个txt文件?

如果预知前面的是英文后面的是中文,即可分开:

#includestdio.h

#define N 100

void main() { FILE *fp; char s[256],y[N][20],h[N][20]; int i,n;

if ( fp=fopen("c:\\data\\text.txt","r") ) {

  n=0;

  while ( !feof(fp) ) {

    fgets(s,256,fp); sscanf("%s%s",y[n],h[n]); n++; if ( n=N ) break;

  }

  fclose(fp);

  printf("英文: "); for ( i=0;in;i++ ) printf("%s ",y[i]); printf("\n");

  printf("中文: "); for ( i=0;in;i++ ) printf("%s ",h[i]); printf("\n");

} else printf("无法打开文件读取。\n");

}

如果中英文顺序不一定,且不会有中英文混合单词:

#includestdio.h

#includestring.h

#define N 100

void main() { FILE *fp; char s[256],y[N][20],h[N][20]; int i,n;

if ( fp=fopen("c:\\data\\text.txt","r") ) {

  n=0;

  while ( !feof(fp) ) {

    fgets(s,256,fp); sscanf("%s%s",y[n],h[n]);

    if ( y[n][0]0 ) { strcpy(s,y[n]);strcpy(y[n],h[n]);strcpy(h[n],s); } //汉字字符ASCII码小于0

    n++; if ( n=N ) break;

  }

  fclose(fp);

  printf("英文: "); for ( i=0;in;i++ ) printf("%s ",y[i]); printf("\n");

  printf("中文: "); for ( i=0;in;i++ ) printf("%s ",h[i]); printf("\n");

} else printf("无法打开文件读取。\n");

}

C语言逐个字符读取字符串这里不懂

getchar()每次从控制台输入读入一个字符到ch,当ch为换行符\n时终止循环

C++循环读取TXT文件里的每一行字符单个显示怎么调

使用单个字符读入函数fgetc一个一个读入每个字符,然后一个一个输出即可。

1、C语言标准库提供了一系列文件操作函数。文件操作函数一般以f+单词的形式来命名(f是file的简写),其声明位于stdio.h头文件当中。例如:fopen、fclose函数用于文件打开与关闭;fscanf、fgets函数用于文件读取;fprintf、fputs函数用于文件写入;ftell、fseek函数用于文件操作位置的获取与设置。一般的C语言教程都有文件操作一章,可以找本教材进一步学习。-c从txt英文文件逐个读入字符

2、例程:

#includestdio.h

int a;

char b,c[100];

int main(){

    FILE * fp1 = fopen("input.txt", "r");//打开输入文件

    FILE * fp2 = fopen("output.txt", "w");//打开输出文件

    if (fp1==NULL || fp2==NULL) {//若打开文件失败则退出

        puts("不能打开文件!");

        rturn 0;

    }

    while(b=fgetc(fp1)!=EOF){//从输入文件读取一个字符

        printf("%c ",b);//一个个输出字符

        fputc(b,fp2);//向输出文件写入一个字符

    }

    fclose(fp1);//关闭输入文件

    fclose(fp2);//关闭输出文件,相当于保存

    return 0;

}