C语言字符串 按行读取

C语言字符串 按行读取,第1张

#include<stdio.h>

#include<stdlib.h>

#include <string.h>

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=0i<leni++)

{

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)

}

给你一个相近的问题+答案供您参考:

问:

我想在/proc/net/ip_conntrack文件下得到dport和bytes后面的数值,应该怎么做????

该文件内容格式如下:

(line1)tcp 6 0 CLOSE src= 192.168.0.3 dst=192.168.0.6 sport=32779 dport=80 packets=2 bytes=100 src=192.168.0.6 dst=192.168.0.3 sport=80 dport=32779 packets=2 bytes=84 [ASSURED] use=1

(line2)tcp 6 51 CLOSE_WAIT src=192.168.0.3 dst=192.168.0.7 sport=4777 dport=1123 packets=7 bytes=314 src=192.168.0.7 dst=192.168.0.3 sport=1123 dport=4777 packets=7 bytes=302 [ASSURED] use=1

(line3)tcp 6 112 SYN_SENT src=192.168.0.3 dst=192.168.0.8 sport=32785 dport=80 packets=3 bytes=180 [UNREPLIED] src=192.168.0.8 dst=192.168.0.3 sport=80 dport=32785 packets=0 bytes=0 use=1

答:

#include <stdlib.h>

#include <stdio.h>

#include <unistd.h>

#include <string.h>int main()

{

FILE* fp = NULL

char cmd[512]

char dport[32]

int i=0

sprintf(cmd, "grep -o -E \"dport=[0-9]{1,}\" /proc/net/ip_conntrack | cut -d\"=\" -f2")

if ((fp = popen(cmd, "r")) != NULL)

{

while(!feof(fp)){

memset(dport,'\0',sizeof(dport))

fgets(dport, sizeof(dport), fp)

if(strlen(dport)>0) printf("dports is: %s", dport)

}

pclose(fp)

}

return0

}

PS:我试过了,可以,想找原文百度”关于从文件中读取特定值的问题“关键字,CSDN上那个是!

1.用fgets函数可以读取文件中某行的数据,某列数据就必须一个一个读入每行的第几个字符,再存入到一个字符串当中。

2.例程:

#include<stdio.h>

#include<string.h>

void main()

{

  char a[100],b[100],c[100]

  int i=3,j=4,k=0    //第三行,第四列

  FILE *fp = fopen("data.txt","r")

  while(fgets(c,100,fp)){    //读入每行数据

    i--

    if(i==0) strcpy(a,c)    //读到第三行数据

    b[k++]=c[j-1]        //把每行的那列字符拷到b中

  }

  b[k]=0

  printf("第%d行数据:%s\n",i,a)

  printf("第%d列数据:%s\n",j,b)

  fclose(fp)

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/6253320.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-19
下一篇2023-03-19

发表评论

登录后才能评论

评论列表(0条)

    保存