首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何仅从C++中带空格的文件中获取数字

如何仅从C++中带空格的文件中获取数字
EN

Stack Overflow用户
提问于 2013-04-07 18:59:47
回答 3查看 123关注 0票数 2

如何从包含数字、空格和字符的文件中仅获取前100个数字(负数、整数和浮点数)?

我当时正在使用这个命令,但我认为fgets不是最好的命令。

代码语言:javascript
运行
复制
int readFile (FILE* fp)
{

char number[101] = "test";
//printf ("%s\n", number);
fgets(number, 101, fp);
//fscanf(fp, "%s", number);
printf ("%s", number);

return 0;
}

我认为如果删除了空格和不需要的字符,就可以使用当前的方法,但目前这种方法甚至不起作用,除非文件中没有空格。

以下是一个文件的示例

代码语言:javascript
运行
复制
44.5 -55 93942 11 text     text text 333.55 999999999999 1111
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-07 19:47:10

代码语言:javascript
运行
复制
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int readFile (FILE* fp){
    char buff[4096];

    while(NULL!=fgets(buff, sizeof(buff), fp)){
        char *number, *check;
        for(number=buff;NULL!=(number=strtok(number," \t\n"));number=NULL){
            //separate string by strtok, isNumber check by strtod 
            strtod(number, &check);
            if(*check=='\0'){
                printf("%s\n",number);
            }
        }
    }

    return 0;
}

int main(){
    readFile(stdin);

    return 0;
}
票数 2
EN

Stack Overflow用户

发布于 2013-04-07 19:22:35

您可以使用fgets获取该行,然后使用sscanf提取所需的数据:

代码语言:javascript
运行
复制
double d1, d6;
int i2, i3, i4, i8;
long long ll7;

sscanf(input, "%lf %d %d %d %*s %*s %*s %lf %lld %d", &d1, &i2, &i3, &i4, &d6, &ll7, &i8);
票数 2
EN

Stack Overflow用户

发布于 2013-04-07 19:14:00

使用fgets解析单个字符数组中的文件内容,然后为每个数字执行strtok()

每个数字都存储在一个双精度的对应函数中。请查看this,看看如何做到这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15861614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档