C语言字符串 按行读取

2025-02-26 02:19:26
推荐回答(2个)
回答1:

#include
#include
#include
int main()
{
int e=0;
char pjk[80]={0},pj[80]={0},fk[80]={0},dd[80]={0};
FILE *fc,*fp;
char *psz;//[100]={0};
int len=0;
int i=0;
int j=0;
int index[5]={0};
fc=fopen("参数.txt","rb");
fp=fopen("输出.txt","wb");

fseek(fc,0L,SEEK_END);
len=ftell(fc);//得到文件长度
fseek(fc,0L,SEEK_SET);
psz=(char*)malloc(len+1);//申请内存
memset(psz,0x00,len+1);
fread(psz,len,sizeof(char),fc);//读全部文件到内存
for (i=0;i {
if('\r'==psz[i])
{
psz[i]=0;//将字符串切割
}
else if ('\n'==psz[i])
{
j++;
psz[i]=0;//将字符串切割
index[j]=i+1;//获取每一行开头索引
}
else
{
dd[i]=psz[i];
}
}

strcpy(dd,psz+index[0]);
e=atoi(psz+index[1]);
strcpy(pjk,psz+index[2]);
strcpy(pj,psz+index[3]);
strcpy(fk,psz+index[4]);
free(psz);//释放内存

fprintf(fp,"%s\r\n",dd);
fprintf(fp,"%d\r\n",e);
fprintf(fp,"%s\r\n",pjk);
fprintf(fp,"%s\r\n",pj);
fprintf(fp,"%s\r\n",fk);

fclose(fc);
fclose(fp);
}

回答2:

写了个代码,希望采纳,等分哦。这个代码还有问题,比如比较字符串后面还有多个6,比如一行数据多余1024,这些需要你自己动手实现。
记住把文件的绝对路径改成你自己的,我是在linux下写的。
#include #include #define bool int#define false 0#define true 1#define MAX_NUM 1025int main(int argc,char **argv){ /*fileSrc是查找文件的绝对路径*/ const char *fileSrc = "/home/xxx/workspace/c/xxx.text"; /*fileSave是找到合适字符串后保存文件的绝对路径*/ const char *fileSave = "/home/xxx/workspace/c/aaa.text"; const char *flagString = "66666"; FILE *fp_src = NULL,*fp_save; char buf[MAX_NUM] = {0}; bool flag = false; fp_src = fopen(fileSrc,"r"); if(fp_src == NULL) return -1; while(fgets(buf,sizeof(buf),fp_src) != NULL) { printf("buf= %s",buf); if(flag == true) { fp_save = fopen(fileSave,"w+"); if(fp_save == NULL) { return -1; } fwrite(buf,1,sizeof(buf)-1,fp_save); fclose(fp_save); break; } if(0 == memcmp(buf,flagString,strlen(flagString))) { flag = true; } memset(buf,0,sizeof(buf)); } fclose(fp_src); return 0;}
是否可以解决您的问题?