C语言如何用fscanf按行读取一段固定格式
要读取的是一行OR2_X2C401(.A1(n66),.A2(n85),.ZN(N142));中的OR2n6n85N142这四个字符串有多行这样的文字如何用C实现?谢谢...
要读取的是一行
OR2_X2 C401 ( .A1(n66), .A2(n85), .ZN(N142) );
中的OR2 n6 n85 N142这四个字符串
有多行这样的文字
如何用C实现?谢谢 展开
OR2_X2 C401 ( .A1(n66), .A2(n85), .ZN(N142) );
中的OR2 n6 n85 N142这四个字符串
有多行这样的文字
如何用C实现?谢谢 展开
展开全部
在fscanf的第二个参数,格式字符串中,指定对应的格式即可。
fscanf与scanf类似,可以格式化输入一组数据,不过不是从终端,而是从对应文件中。
其声明为:
int fscanf(FILE *fp, const char *fmt, ...);
功能为从打开的文件fp中,根据fmt格式字符,读取数据到后续参数中,并返回实际读取的个数。
比如,文件中存着以逗号分隔的三个整型数值,那么将其读取的操作即
fscanf(fp,"%d:%d:%d",&a,&b,&c);
其中,fp为打开的文件指针,abc分别是三个整型变量。
fscanf与scanf类似,可以格式化输入一组数据,不过不是从终端,而是从对应文件中。
其声明为:
int fscanf(FILE *fp, const char *fmt, ...);
功能为从打开的文件fp中,根据fmt格式字符,读取数据到后续参数中,并返回实际读取的个数。
比如,文件中存着以逗号分隔的三个整型数值,那么将其读取的操作即
fscanf(fp,"%d:%d:%d",&a,&b,&c);
其中,fp为打开的文件指针,abc分别是三个整型变量。
展开全部
你可以用fgets()按行读取内容到 字符串变量里,然后处理。
假如已读入到 str[80] 里:
char str[80]="OR2_X2 C401 ( .A1(n66), .A2(n85), .ZN(N142) )";
多行这样的文字格式,
如果位置固定,可以直接读出:
char r[4][5];
sscanf(str,"%s",r[0]); r[0][3]='\0';printf("%s\n",r[0]);
sscanf(str+18,"%s",r[1]); r[1][2]='\0';printf("%s\n",r[1]);
sscanf(str+28,"%s",r[2]); r[2][3]='\0';printf("%s\n",r[2]);
sscanf(str+38,"%s",r[3]); r[3][4]='\0';printf("%s\n",r[3]);
------------------------
如果位置不固定,我们可以用查找 点号的位置加4:
int i,j,L[3];
j=0;
for (i=0;i<strlen(str);i++){
if (str[i]=='.'){L[j]=i+4; j++;}
}
sscanf(str,"%s",r[0]); r[0][3]='\0';printf("%s\n",r[0]);
sscanf(str+L[0],"%s",r[1]); r[1][2]='\0';printf("%s\n",r[1]);
sscanf(str+L[1],"%s",r[2]); r[2][3]='\0';printf("%s\n",r[2]);
sscanf(str+L[2],"%s",r[3]); r[3][4]='\0';printf("%s\n",r[3]);
假如已读入到 str[80] 里:
char str[80]="OR2_X2 C401 ( .A1(n66), .A2(n85), .ZN(N142) )";
多行这样的文字格式,
如果位置固定,可以直接读出:
char r[4][5];
sscanf(str,"%s",r[0]); r[0][3]='\0';printf("%s\n",r[0]);
sscanf(str+18,"%s",r[1]); r[1][2]='\0';printf("%s\n",r[1]);
sscanf(str+28,"%s",r[2]); r[2][3]='\0';printf("%s\n",r[2]);
sscanf(str+38,"%s",r[3]); r[3][4]='\0';printf("%s\n",r[3]);
------------------------
如果位置不固定,我们可以用查找 点号的位置加4:
int i,j,L[3];
j=0;
for (i=0;i<strlen(str);i++){
if (str[i]=='.'){L[j]=i+4; j++;}
}
sscanf(str,"%s",r[0]); r[0][3]='\0';printf("%s\n",r[0]);
sscanf(str+L[0],"%s",r[1]); r[1][2]='\0';printf("%s\n",r[1]);
sscanf(str+L[1],"%s",r[2]); r[2][3]='\0';printf("%s\n",r[2]);
sscanf(str+L[2],"%s",r[3]); r[3][4]='\0';printf("%s\n",r[3]);
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询