如何从 C 文件中获取分离的整数
How to get separeated ints from file in C
在 C 语言中,如何从“1, 2,3, 5,6”(数组或一个一个地)这样的文件中获取分隔的整数,而不会像“”这样的垃圾或“,”?(,,,
是一种可能的情况)
我考虑过 strtok
但它只处理字符串,我不知道文件的长度是多少,所以也许 fgets
不是解决方案..
我试过这个:
fp=fopen("temp.txt","r");
if(fp==NULL)
{
fprintf(stderr,"%s","Error");
exit(0);
}
while(fscanf(fp,"%d",&num)!=EOF)
{
printf("first num is %d",&num);
}
但我认为这将是一个问题,因为未知的文件大小和垃圾问题。
你怎么看?
谢谢!!
使用scanf()
的return值
int chk;
do {
chk = fscanf(fp, "%d", &num);
switch (chk) {
default: /* EOF */;
break;
case 0: fgetc(fp); /* ignore 1 character and retry */
break;
case 1: printf("num is %d\n", num);
break;
}
} while (chk >= 0);
下面的程序适用于文件的任何格式,并且可以提取其中包含的任何整数
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main(int argc, char *argv[])
{
FILE* f=fopen("file","rb");
/* open the file */
char *str=malloc(sizeof(char)*100);
/* str will store every line of the file */
if (f!=NULL)
{
printf("All the numbers found in the file !\n");
while (fgets(str,100,f)!=NULL)
{
int i=0,n=0;
/* the n will contain each number of the f ile */
for (i=0;i<strlen(str);i++)
{
int test=0;
/* test will tell us if a number was found or not */
while (isdigit(str[i]) && i<strlen(str))
{
test=1;
n=n*10+str[i]-'0';
i++;
}
if(test!=0)
printf("%d\n",n);
/* print the number if it is found */
}
}
fclose(f);
}
free(str);
//free the space allocated once we finished
return 0;
}
如果我们的文件是
Hell0a, How12
ARe 1You ?
I live in 245 street
它将生成
All the numbers found in the file !
0
12
1
245
希望对您有所帮助!
在 C 语言中,如何从“1, 2,3, 5,6”(数组或一个一个地)这样的文件中获取分隔的整数,而不会像“”这样的垃圾或“,”?(,,,
是一种可能的情况)
我考虑过 strtok
但它只处理字符串,我不知道文件的长度是多少,所以也许 fgets
不是解决方案..
我试过这个:
fp=fopen("temp.txt","r");
if(fp==NULL)
{
fprintf(stderr,"%s","Error");
exit(0);
}
while(fscanf(fp,"%d",&num)!=EOF)
{
printf("first num is %d",&num);
}
但我认为这将是一个问题,因为未知的文件大小和垃圾问题。 你怎么看?
谢谢!!
使用scanf()
的return值
int chk;
do {
chk = fscanf(fp, "%d", &num);
switch (chk) {
default: /* EOF */;
break;
case 0: fgetc(fp); /* ignore 1 character and retry */
break;
case 1: printf("num is %d\n", num);
break;
}
} while (chk >= 0);
下面的程序适用于文件的任何格式,并且可以提取其中包含的任何整数
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main(int argc, char *argv[])
{
FILE* f=fopen("file","rb");
/* open the file */
char *str=malloc(sizeof(char)*100);
/* str will store every line of the file */
if (f!=NULL)
{
printf("All the numbers found in the file !\n");
while (fgets(str,100,f)!=NULL)
{
int i=0,n=0;
/* the n will contain each number of the f ile */
for (i=0;i<strlen(str);i++)
{
int test=0;
/* test will tell us if a number was found or not */
while (isdigit(str[i]) && i<strlen(str))
{
test=1;
n=n*10+str[i]-'0';
i++;
}
if(test!=0)
printf("%d\n",n);
/* print the number if it is found */
}
}
fclose(f);
}
free(str);
//free the space allocated once we finished
return 0;
}
如果我们的文件是
Hell0a, How12
ARe 1You ?
I live in 245 street
它将生成
All the numbers found in the file !
0
12
1
245
希望对您有所帮助!