The input file is such that it has a string followed by an integer on first line and from second line it has a string followed by 2 integers. My below code works well but is there a way to skip the string ? I am just scanning it with some character array char sink[30]. Actually I don't need this value how can I use fscanf() to skip this string and just read integers.
#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;
}
For discarding data in scanf
you use an asterisk in between the format specifier such as %*s
, %*c
etc. This is the same for fscanf
. Simply add an asterisk to scan and discard the string:
fscanf(fp,"%*s %d",&v);
This will scan a string from the file,discard it and will then scan and assign an integer to v
. You can do the same for your second fscanf
:
fscanf(fp,"%*s %d %d",&p[i],&q[i]);
If your input is line-oriented, it's much better to use line-oriented input. Such as fgets()
, which lets you read whole lines. Keeping track of whether or not the read line is the first or not is pretty easy, of course.
Also:
fscanf()
(and other I/O functions) since they cal fail. malloc()
in C .
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.