【关于C语言函数fscanf格式化读入数据的问题】

data.txt数据如下:
1时间34
2时间77
9时间98
4时间56

如何用fscanf读取把前后两个数字取出来放入变量

我写的帮忙看看

#include "stdio.h"
#include "string.h"

main()
{
FILE *fp;
int i,num;
fp=fopen("data.txt","r");
while(fscanf(fp,"%d%*s%d",&i,&num)!=EOF)
{
printf("%d = %d\n",i,num);
}
fclose(fp);
}

#include "stdio.h"
#include "string.h"

main()
{
FILE *fp;
int i,num;
fp=fopen("data.txt","r");
while(fscanf(fp,"%d%*6s%d\n",&i,&num)!=EOF)
{
printf("%d = %d\n",i,num);
}
fclose(fp);
}
这个是跳过6个宽度 如果中文长度不固定我就不知道怎么弄了
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-04-15
#include <stdio.h>
#include<stdlib.h>

main()
{
FILE *fp;
int i,num[4][2];
char str[20];
fp=fopen("time.dat","r");
i=0;
while(fscanf(fp,"%s",str)!=EOF)
{
num[i][0]=atoi(str);
num[i][1]=atoi(&str[5]);
printf("%d %d\n",num[i][0],num[i][1]);
}
fclose(fp);
system("pause");
}
数据文件的格式是固定的,这个程序就可以了,如果格式不固定,也可以做但稍微麻烦一点。
第2个回答  2012-04-15
#include "stdio.h"
#include "string.h"

main()
{
FILE *fp;
int i,num,tmp;
//tmp没有用,纯粹是为了跳过中间两个汉字。也可以使用fseek(fp,4,1)跳过两个汉字

fp=fopen("data.txt","r");
while(fscanf(fp,"%d%d%d",&i,&tmp,&num)!=EOF)
{
printf("%d = %d\n",i,num);
}
fclose(fp);
}追问

7 = -858993460
7 = -858993460
7 = -858993460
7 = -858993460
7 = -858993460
7 = -858993460
7 = -858993460
7 = -858993460
7 = -858993460

你的%d tmp 无法越过中文

追答

那就:
char tmp;
while(fscanf(fp,"%d%c%c%c%c%d",&i,&tmp,&tmp,&tmp,&tmp,&num)!=EOF)

总之一个中文就是两个char啦。。。。

关于C语言读取文件及fscanf函数的问题
1 int fscanf(FILE*stream,constchar*format,[argument...]);FILE *stream:文件指针;char *format:格式字符串;[argument...]:输入列表。例如:FILE* fp;char a[10];int b;double c;fscanf(fp , "%s %d %lf" , a , &b , &c);和scanf一样,格式化串的空格不代表读取的子串有空格...

c语言中的fscanf()函数
fscanf是C语言中一个非常常用的函数,它用于从文件中读取格式化输入。这个函数可以读取不同类型的数据,如整数、浮点数、字符串等。其函数原型为:`int fscanf`。其中,stream指向要读取的文件,format是读取数据的格式字符串。2. fscanf函数的格式字符串 格式字符串指定了预期输入数据的格式。例如,%d表示...

C语言或者C++中格式化输入问题
用fscanf一个一个读。include <stdio.h> include <stdlib.h> include <conio.h> include <string.h> include <memory.h> void main(){ FILE *dataFile;float farr[1024];int i, num;dataFile = fopen("D:\\\\datafile.txt", "r");if (!dataFile){ printf("Open file error, exit!\\n")...

C语言文件读取fscanf(),该怎么处理
fscanf位于头文件<stdio.h>中,函数原型为int fscanf(FILE*stream, constchar*format, [argument...]); 其功能为根据数据格式(format)从输入流(stream)中写入数据(argument);与fgets的差别在于:fscanf遇到空格和换行时结束,注意空格时也结束,fgets遇到空格不结束。函数名: fscanf 功 能: 从一个流...

C语言fscanf提取一行和原来文件中存入的值不一样
输出的格式与输入的格式不一致,导致读写错误。提示:输出数据的分隔符是空格,输入数据的分隔符是逗号

C语言 格式读取 fscanf() 如何读取至末尾结束(txt)
fscanf是有返回值的。如果返回EOF,证明到达文件结尾 在C语言中,或更精确地说成C标准函数库中表示文件结束符(end of file)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围...

C语言fscanf函数读取文件出问题
你把 fscanf( ) 库函数中的换行符 '\\n' 都去掉,再试一试看看。

c语言中的fscanf()
在C语言编程中,fscanf函数扮演着关键角色,它用于从输入流中读取数据。这个函数的一个重要特性是它能够根据特定格式(如以空格分隔)读取数据。当你使用类似`int ans = fscanf(fp, "%d %d", &a, &b);`这样的语句时,fscanf会尝试从文件指针fp指向的位置读取一个整数并将其存储在变量a中,接着再...

C语言中fscanf()的用法
功 能: 从一个流中执行格式化输入\\x0d\\x0a 用 法: int fscanf(FILE *stream, char *format,[argument...]);\\x0d\\x0a int fscanf(文件指针,格式字符串,输入列表);\\x0d\\x0a 返回值:整型,数值等于[argument...]的个数\\x0d\\x0a 程序例:\\x0d\\x0a #include \\x0d\\x...

c语言,fscanf()读取float类型数据!时的问题!
for(i=0;i<3;i++) fscanf(fp,"%f",&da[i].data);\/\/这里有问题,定义的struct student a[3];引用的 dafor(i=0;i<3;i++) fscanf(fp,"%f",&a[i].data); \/\/这样去掉 da 的 d 就没问题了

相似回答