c语言如何实现从文本文件里读取数字?
2个回答
展开全部
从文本文件读取的字符串:
1:100,200,101,200,102,200
------------------------------------
截取字符串转为int,用数组存放。
100,200,101,200,102,200
int数组内容为:
num[0] = 100 num[1] = 200 num[2] = 101 num[3] = 200 num[4] = 102
Press any key to continue
data.txt文件内容为:1:100,200,101,200,102,200
#include <stdio.h>
#include "conio.h"
#include "stdlib.h"
int main()
{
FILE *fp;
char *pchBuf,tmp[5];
int nLen,cnt=0;
int i,j=0,k=0,num[8];
fp = fopen ("data.txt","r");
fseek(fp, 0, SEEK_END); //文件指针移到文件尾
nLen = ftell(fp); //得到当前指针位置, 即是文件的长度
//fseek(fp, 2, SEEK_SET); //文件指针移到文件尾
rewind(fp); //文件指针恢复到文件头位置
//动态申请空间, 为保存字符串结尾标志\0, 多申请一个字符的空间
pchBuf = (char*) malloc(sizeof(char)*nLen+1);
if(!pchBuf)
{
perror("内存不够!\n");
exit(0);
}
//读取文件内容//读取的长度和源文件长度有可能有出入,这里自动调整 nLen
nLen = fread(pchBuf, sizeof(char), nLen, fp);
fclose(fp);
pchBuf[nLen] = '\0'; //添加字符串结尾标志
printf("从文本文件读取的字符串:\n");
printf("%s\n", pchBuf); //把读取的内容输出到屏幕看看
printf("------------------------------------\n");
printf("截取字符串转为int,用数组存放。\n");
for (i=2;i<nLen;i++)
{
printf("%c",*(pchBuf+i));
tmp[j++]=*(pchBuf+i);
if (*(pchBuf+i)==',' ||*(pchBuf+i)=='\0' )
{
tmp[j] = '\0';
cnt++;
//printf("%s",tmp);
num[k++]=atoi(tmp);
j=0;
}
}
free(pchBuf);
printf("\nint数组内容为:\n");
for (k=0;k<cnt;k++)
{
printf("num[%d] = %d ",k,num[k]);
}
printf("\n");
return 0;
}
1:100,200,101,200,102,200
------------------------------------
截取字符串转为int,用数组存放。
100,200,101,200,102,200
int数组内容为:
num[0] = 100 num[1] = 200 num[2] = 101 num[3] = 200 num[4] = 102
Press any key to continue
data.txt文件内容为:1:100,200,101,200,102,200
#include <stdio.h>
#include "conio.h"
#include "stdlib.h"
int main()
{
FILE *fp;
char *pchBuf,tmp[5];
int nLen,cnt=0;
int i,j=0,k=0,num[8];
fp = fopen ("data.txt","r");
fseek(fp, 0, SEEK_END); //文件指针移到文件尾
nLen = ftell(fp); //得到当前指针位置, 即是文件的长度
//fseek(fp, 2, SEEK_SET); //文件指针移到文件尾
rewind(fp); //文件指针恢复到文件头位置
//动态申请空间, 为保存字符串结尾标志\0, 多申请一个字符的空间
pchBuf = (char*) malloc(sizeof(char)*nLen+1);
if(!pchBuf)
{
perror("内存不够!\n");
exit(0);
}
//读取文件内容//读取的长度和源文件长度有可能有出入,这里自动调整 nLen
nLen = fread(pchBuf, sizeof(char), nLen, fp);
fclose(fp);
pchBuf[nLen] = '\0'; //添加字符串结尾标志
printf("从文本文件读取的字符串:\n");
printf("%s\n", pchBuf); //把读取的内容输出到屏幕看看
printf("------------------------------------\n");
printf("截取字符串转为int,用数组存放。\n");
for (i=2;i<nLen;i++)
{
printf("%c",*(pchBuf+i));
tmp[j++]=*(pchBuf+i);
if (*(pchBuf+i)==',' ||*(pchBuf+i)=='\0' )
{
tmp[j] = '\0';
cnt++;
//printf("%s",tmp);
num[k++]=atoi(tmp);
j=0;
}
}
free(pchBuf);
printf("\nint数组内容为:\n");
for (k=0;k<cnt;k++)
{
printf("num[%d] = %d ",k,num[k]);
}
printf("\n");
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以通过fscanf,从文件中依次读取数据。当fscanf返回EOF时,表示读到文件结尾,这时停止读取即可。以文件中存储的为空格分隔的整型字符为例,可以写作:while(fscanf(fp,"%d",&n) != EOF)//从打开的文件指针fp指向的文件读数据,每次读一个整型,直至文件结尾。
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
C语言是一个有结构化程序设计、具有变量作用域(variable scope)以及递归功能的过程式语言。C语言传递参数均是以值传递(pass by value),另外也可以传递指针(a pointer passed by value)。不同的变量类型可以用结构体(struct)组合在一起。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询