几年前这是一个考试题目,我正在努力解决它。
我必须构建一个程序,从文本文件中读取一组数字,中间有一个空格,可以是整数或浮点数。然后使用递归函数打印其中包含最大位数的数字。
我不知道如何从文件中读取数字。如果我读它们都像浮子一样,它们最终会得到相同数量的数字。这是我的代码,直到知道,但我不知道如何继续。 例如:
在文本文件中我们有数字: 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;
}
答案 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