
#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)
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)