c - 解析特定数字

标签 c string parsing integer

我知道这是一个基本问题......但我已经坚持了一个小时。我是 C 的新手。我一直在尝试从以特定方式定位的文本文件中解析一些整数。这是一个例子:

A 123,1

B 456,2 

N 980,2

我想丢掉字母和逗号后面的数字。因此,我只有 123、456 和 980。我一直卡在第一部分(扔掉字母,中间的空白一直在搞砸 :( )。我知道有很多帖子有些相似,但我似乎无法获得它。这是我目前的代码(test.txt 包含输入值)。

int main(void)
{
    FILE *rFile = fopen ("test.txt", "rt");
    char input[20];

    if (rFile == NULL) {
        printf("Input file could not be located");
        return -1;
    }

    while (fscanf(rFile, "%s \n", input) > 0)
    {
     printf("%s", input);
    }
    fclose(rFile);

    return 0;
}

这显然不完整。我解决这个问题的方法是获取输入字符串(包括空格),然后使用 strtok 删除中间部分。但是,我什至无法正确解析文本文件的每一行。

最佳答案

scanf 可以很好地选择性地读取输入的一部分。

int num;
scanf("%*c %d,%*d",&num);
printf("%d\n",num);

scanf 忽略 %d 之前的空格和格式字符串中的星号(例如在 %*c% *d) 让它读入然后丢弃该标记,使我们无需指定变量来存储我们不需要的输入部分。

关于c - 解析特定数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5212141/

相关文章:

在 __device__ 函数中创建太多 double 时 Cuda 内核未启动

c - 定位头文件的规则

arrays - 字符串和数组的集差

python - 向后解析 CSV 文件

css - rebol parse 函数是否能够创建完全解析 css2/css3 的规则?

json - 如何在 Golang 中获取 JSON 唯一字段的名称和深度嵌套的子字段的值?

c - addr2line 返回 ?? :0 even when compiled with -g3, gdb 回溯有效

c - 如何执行这个缓冲区溢出?在Ubuntu中

python - 如何在python中连续打印右侧结果?

c# - "TrimEnd()"的意外结果......结果随机太贪婪