找到其中包含最大数字的数字

时间:2016-06-08 18:16:47

标签: c file floating-point numbers

几年前这是一个考试题目,我正在努力解决它。

我必须构建一个程序,从文本文件中读取一组数字,中间有一个空格,可以是整数或浮点数。然后使用递归函数打印其中包含最大位数的数字。

我不知道如何从文件中读取数字。如果我读它们都像浮子一样,它们最终会得到相同数量的数字。这是我的代码,直到知道,但我不知道如何继续。 例如:

在文本文件中我们有数字: 1 2 1.5 1.456 2 2.78 7

最大位数的数字为 1.456 ,其中 4 位。

#include <stdio.h>
#include <stdlib.h>


int main()
{
    int n,i,nr=0;
    float v[100];
    FILE *fp;
    fp = fopen("text.txt","r");
    while(fscanf(fp,"%f",&v[nr])==1){
        nr++;
    }
    fclose(fp);



    return 0;   
}

2 个答案:

答案 0 :(得分:2)

如果您将输入视为简单字符串,那么您应该只能strlen(),不是吗?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
    size_t maxdigits = 0, i;
    char buf[128], winner[128];
    char winner[128];
    FILE* fp = fopen("text.txt", "r");
    if (fp == NULL) {
       printf("missing text.txt\n");
       return -1;
       }
    memset(winner, 0, sizeof(winner));
    while(fscanf(fp, "%s", buf) == 1) {
        i = strlen(buf);
        if (strchr(buf, '.') != NULL)
            i--;
        if (i > maxdigits) {
            maxdigits = i;
            strcpy(winner, buf);
            }
        }
    fclose(fp);
    printf("winner '%s' has %d digits\n", winner, maxdigits);
    return 0;
    }

答案 1 :(得分:0)

首先,您必须使用“拆分”功能。

这里似乎适合你 enter link description here