输入文件是这样的,它在第一行有一个字符串后跟一个整数,从第二行开始,它有一个字符串后跟2个整数.我的下面的代码运行良好,但有没有办法跳过字符串?我只是用一些字符数组char sink [30]扫描它.实际上我不需要这个值如何使用fscanf()来跳过这个字符串并只读取整数.
#include<stdio.h>
#include<stdlib.h>
int main()
{
int v,i=0,f=1;
static int *p,*q;
FILE *fp;
char sink[30];
fp = fopen("some.txt","r");
while(!feof(fp))
{
if(f)
{
fscanf(fp,"%s %d",sink,&v);
p = (int *)malloc(sizeof(int)*v);
q = (int *)malloc(sizeof(int)*v);
f=0;
}
else
{
fscanf(fp,"%s %d %d",sink,&p[i],&q[i]);
i++;
}
}
fclose(fp);
printf("The input vertices are\n");
for(i=0;i<v;i++)
printf("%d %d\n",p[i],q[i]);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
对于丢弃数据,scanf请在格式说明符之间使用星号,例如%*s,%*c等.这是相同的fscanf.只需添加一个星号即可扫描并丢弃该字符串:
fscanf(fp,"%*s %d",&v);
Run Code Online (Sandbox Code Playgroud)
这将扫描文件中的字符串,丢弃它,然后扫描并分配一个整数v.您可以为第二个做同样的事情fscanf:
fscanf(fp,"%*s %d %d",&p[i],&q[i]);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8220 次 |
| 最近记录: |