本文目录一览:
- 1、C语言怎么实现逐行读取指定字符串丫?
- 2、c语言中从文件中按行读取字符串,并进行相应操作。
- 3、用c语言读取一个txt文件?
- 4、C语言逐个字符读取字符串这里不懂
- 5、C++循环读取TXT文件里的每一行字符单个显示怎么调
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;
}