使用fscanf()跳过字符串

Gop*_*opi 2 c

输入文件是这样的,它在第一行有一个字符串后跟一个整数,从第二行开始,它有一个字符串后跟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)

Spi*_*rix 7

对于丢弃数据,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)