如何读取一个文本文件中的数据?

时间:2023-02-11 07:45:34
如何读取一个文本文件中的数据?是用空格或豆号隔开的一些数,可求能参与一些集合运算?如:
1   2   6   7  
6    7  5   9
比较两行中相同数有哪些?

19 个解决方案

#1


 int sscanf( const char *buffer, const char *format, ... );

#2


fscanf(文件指针,读取格式,变量)

#3


getline
strtok
std::set
set_difference

#4


能否详点写出来?

#5


fgets加
#include <stdio.h>
char s[]="123 ab 4";
char *p;
int v,n,k;
void main() {
    p=s;
    while (1) {
        k=sscanf(p,"%d%n",&v,&n);
        printf("k,v,n=%d,%d,%d\n",k,v,n);
        if (1==k) {
            p+=n;
        } else if (0==k) {
            printf("skip char[%c]\n",p[0]);
            p++;
        } else {//EOF==k
            break;
        }
    }
    printf("End.\n");
}
//k,v,n=1,123,3
//k,v,n=0,123,3
//skip char[ ]
//k,v,n=0,123,3
//skip char[a]
//k,v,n=0,123,3
//skip char[b]
//k,v,n=1,4,2
//k,v,n=-1,4,2
//End.

#6


fp=fopen(文件名,"r");
while(ch=getc(fp)!=EOF)
putchar(ch);
fclose(fp);

#7


刚学不久C,不懂大哥的程序,希能详术,并读两个文本试一试

#8


为何C要实现一个简单问题都很难,而用其它的某些语言却很容易。

#9


引用 8 楼 bcxss123 的回复:
为何C要实现一个简单问题都很难,而用其它的某些语言却很容易。


尺有所短,寸有所长。
C可以做一些其他语言做不了的,同时这种文本处理确实不如脚本语言。

#10


如果随机的产生两个数字集合如何实现它位之间的交,并,补等运算,用C++要求速度尽可能的快。5楼大哥请考虑如何?

#11


fscanf("%d\t",&....)
即可

#12


引用 11 楼 xy505188 的回复:
fscanf("%d\t",&....)
即可

应该是
fscanf(fp,"%d\t",&a)

#13


读取d盘根目录下1.txt文件。
文件内容:
如何读取一个文本文件中的数据?
代码如下:
#include<stdio.h>
int main()
{
FILE *fp;//定义文件指针
    char a;//定义读取字符变量
if((fp=fopen("d:\\1.txt","r"))==NULL)//判断文件是否为空,是空提示错误,
{
printf("can not open this file\n");
exit(0);
}
else//否则只读方式打开要读的1.txt文件
{
while(!feof(fp))/*如果文件内容没有读完,那么执行下列代码。*/
{
fscanf(fp,"%c",&a);/*一个字符一个字符读文件中的字符*/
printf("%c",a);//每读一个字符就打印出来一个字符。
}
fclose(fp);/*关闭并保存文件。*/
}
printf("\n");
return 0;
}
如何读取一个文本文件中的数据?

#14


楼上这个把exit(0)改成return 0;可运行但只能读取文本不能比较两行相同的数据啊。

#15


如果随机的产生两个数字集合或者含有其它字符,如何实现它门之间的交,并,补等运算,用C++要求速度尽可能的快。

#16


引用 14 楼 bcxss123 的回复:
楼上这个把exit(0)改成return 0;可运行但只能读取文本不能比较两行相同的数据啊。

额,对不住了,没看清题意,只看到了前半部分。菜鸟飞过,大牛勿怪。 如何读取一个文本文件中的数据?

#17


引用 9 楼 buyong 的回复:
Quote: 引用 8 楼 bcxss123 的回复:

为何C要实现一个简单问题都很难,而用其它的某些语言却很容易。


尺有所短,寸有所长。
C可以做一些其他语言做不了的,同时这种文本处理确实不如脚本语言。


难者不会,会者不难
文本处理没有比C更简单的了
元芳,你怎么看

#19


对大家的回答都不如意

#1


 int sscanf( const char *buffer, const char *format, ... );

#2


fscanf(文件指针,读取格式,变量)

#3


getline
strtok
std::set
set_difference

#4


能否详点写出来?

#5


fgets加
#include <stdio.h>
char s[]="123 ab 4";
char *p;
int v,n,k;
void main() {
    p=s;
    while (1) {
        k=sscanf(p,"%d%n",&v,&n);
        printf("k,v,n=%d,%d,%d\n",k,v,n);
        if (1==k) {
            p+=n;
        } else if (0==k) {
            printf("skip char[%c]\n",p[0]);
            p++;
        } else {//EOF==k
            break;
        }
    }
    printf("End.\n");
}
//k,v,n=1,123,3
//k,v,n=0,123,3
//skip char[ ]
//k,v,n=0,123,3
//skip char[a]
//k,v,n=0,123,3
//skip char[b]
//k,v,n=1,4,2
//k,v,n=-1,4,2
//End.

#6


fp=fopen(文件名,"r");
while(ch=getc(fp)!=EOF)
putchar(ch);
fclose(fp);

#7


刚学不久C,不懂大哥的程序,希能详术,并读两个文本试一试

#8


为何C要实现一个简单问题都很难,而用其它的某些语言却很容易。

#9


引用 8 楼 bcxss123 的回复:
为何C要实现一个简单问题都很难,而用其它的某些语言却很容易。


尺有所短,寸有所长。
C可以做一些其他语言做不了的,同时这种文本处理确实不如脚本语言。

#10


如果随机的产生两个数字集合如何实现它位之间的交,并,补等运算,用C++要求速度尽可能的快。5楼大哥请考虑如何?

#11


fscanf("%d\t",&....)
即可

#12


引用 11 楼 xy505188 的回复:
fscanf("%d\t",&....)
即可

应该是
fscanf(fp,"%d\t",&a)

#13


读取d盘根目录下1.txt文件。
文件内容:
如何读取一个文本文件中的数据?
代码如下:
#include<stdio.h>
int main()
{
FILE *fp;//定义文件指针
    char a;//定义读取字符变量
if((fp=fopen("d:\\1.txt","r"))==NULL)//判断文件是否为空,是空提示错误,
{
printf("can not open this file\n");
exit(0);
}
else//否则只读方式打开要读的1.txt文件
{
while(!feof(fp))/*如果文件内容没有读完,那么执行下列代码。*/
{
fscanf(fp,"%c",&a);/*一个字符一个字符读文件中的字符*/
printf("%c",a);//每读一个字符就打印出来一个字符。
}
fclose(fp);/*关闭并保存文件。*/
}
printf("\n");
return 0;
}
如何读取一个文本文件中的数据?

#14


楼上这个把exit(0)改成return 0;可运行但只能读取文本不能比较两行相同的数据啊。

#15


如果随机的产生两个数字集合或者含有其它字符,如何实现它门之间的交,并,补等运算,用C++要求速度尽可能的快。

#16


引用 14 楼 bcxss123 的回复:
楼上这个把exit(0)改成return 0;可运行但只能读取文本不能比较两行相同的数据啊。

额,对不住了,没看清题意,只看到了前半部分。菜鸟飞过,大牛勿怪。 如何读取一个文本文件中的数据?

#17


引用 9 楼 buyong 的回复:
Quote: 引用 8 楼 bcxss123 的回复:

为何C要实现一个简单问题都很难,而用其它的某些语言却很容易。


尺有所短,寸有所长。
C可以做一些其他语言做不了的,同时这种文本处理确实不如脚本语言。


难者不会,会者不难
文本处理没有比C更简单的了
元芳,你怎么看

#18


#19


对大家的回答都不如意

#20