提取文件C中字母之间的数字

提取文件C中字母之间的数字,c,extract,digits,C,Extract,Digits,我有一个文本文件,其中包括随机输入的数字和字母 我需要提取文件中的数字,但不是全部,只提取前五位数字 我的文本文件包含以下字符: hg34h2g45hjk36jk6jkh34jkl34hl378l59k0567l60hlh67h98j496j46k90k1hjk1 所以我写了这个代码 #include <stdio.h> #include <conio.h> #include <ctype.h> int main() { int c; FIL

我有一个文本文件,其中包括随机输入的数字和字母

我需要提取文件中的数字,但不是全部,只提取前五位数字

我的文本文件包含以下字符:

hg34h2g45hjk36jk6jkh34jkl34hl378l59k0567l60hlh67h98j496j46k90k1hjk1

所以我写了这个代码

#include <stdio.h>
#include <conio.h>
#include <ctype.h>

int main()
{
    int c;
    FILE *fp;
    fp = fopen("file1.txt", "r");

    while ((c =fgetc(fp)) != EOF )
    {
        if (isdigit(c))
        {
            putchar(c);
        }
    }
    getch();
}
#包括
#包括
#包括
int main()
{
INTC;
文件*fp;
fp=fopen(“file1.txt”,“r”);
而((c=fgetc(fp))!=EOF)
{
if(isdigit(c))
{
普查尔(c);
}
}
getch();
}
当我运行代码时,它会显示文件中的所有数字。 这是输出:

342453663437859056706798496411 大宗报价

我被困在那里了,从现在起我该怎么办

编辑:主要问题已经解决,但是否可以将输出分配给所需的变量?

只需计数到5:

#include <stdio.h>
#include <conio.h>
#include <ctype.h>

int main()
{
    int c;
    int count =0;
    FILE *fp;
    fp = fopen("file1.txt", "r");

    while (((c =fgetc(fp)) != EOF) && count <5 )
    {
        if (isdigit(c))
        {
            putchar(c);
            count ++;
        }
    }
    getch();
}
#包括
#包括
#包括
int main()
{
INTC;
整数计数=0;
文件*fp;
fp=fopen(“file1.txt”,“r”);

而(((c=fgetc(fp))!=EOF)和&count使用一个变量来跟踪计数。当计数达到5时,中断循环,如下所示

int c;
FILE *fp;
fp = fopen("file1.txt", "r");
int count = 0;
while ((c =fgetc(fp)) != EOF )
{
    if (isdigit(c))
    {
        count++;
        putchar(c);
        if(count == 5)
            break;
    }
}

嗯……使用计数器?
int n=0;
putchar()
之前,插入
if(++n>5)break;
“输出到所需的变量?”而不是用putchar(c)输出到stdout,为前5个变量(n=0..4)构建一个字符串变量(char数组),
string[n]=c;
。别忘了为字符串分配至少6个字符,并在末尾添加一个\0。然后您可以执行strtod()调用以转换为整数变量。或者,一次生成一个整数,
intVar+=10*intVar+(c-'0')
您意外地将while循环中的
计数大写。您让我想起了我的TC++天!:D