VC++读取文本文件里的数据到数组中

文本文件中的数据:
10111100000000001010001001
01110100010000000000110001
00110000000000000001000000
10110110000100001010101001
11000010000100010001000111
00101100101100100011000010
11101100000010011001000001
11010100010010001011000011
10101100000000100001000001
10111100000100100001000001
01001100011000011011000001
11100000011000011011000100
01011010101000000010111001
11001000010010011010110001
10111000000000101010011001
00101110010100000010101001
10101010000000110001000001
00100110100000100000111001
10110010101100100010100011
10101110000100100011000001
01011110100000100010110011
00110110111000111000001111
01011110011000000010011000
00011110000100100000010000
01011110110101000110000000
11110001001000110110101001
11110010100001001000011001
11010100000100001010101111
10111010111000100010101001
11010100100100111000111000
11100100011101000110111111
01001010010101001011000111
00101100101000000010101001
10110110000100001010111001
10110110000100100000111001
00101110101100111000010001
10110110000010100010010001
11101100100101010100111001
11000100100100100010100001
10111000111100100000101100
10111010000100001000001000
11001110110100001010110001
11110001110010100010100001
11101100011000100000110001
01010010001010000000111010
10111110010000100000011001
11010010000101000111000000
10101110000000100011000001
00110010000000100001000001
10110100000100000011000001

想读入到一个整数型数组中去。这是我写的程序~没有错误 但是达不到效果
请大虾帮忙看看应该怎么改 谢谢
#include "stdio.h"
#include "iostream.h"
#include "string.h"
#include "stdlib.h"

#define N 50

void main()
{
FILE *f;
int i=0,j=0;
int Property[N][25];
char str[100],*pNext;
cout<<"请输入数据集合文件名称"<<endl;
cin>>str;
f=fopen(str,"r");
if(f==NULL) {cout<<"Error, file don't open!"<<endl; return;}
while(!feof(f))
{
fgets(str,100,f);
pNext=str;
for(j=0;j<25;j++)
{
Property[i][j]=atoi(pNext);
cout<<Property[i][j]<<endl;
pNext=pNext+1;
}
i++;
}
getchar();
fclose(f);
}
读入数据完全不对 比如Property[0][0]应该等于1 运行结果为-115585375~~囧啊

atoi(pNext); 你这样把一个字符转换成int是不行的,你不用转换pNext它即可以看做是个字符,也可以看做是个int类型,实际上你的Property[0][0]保存的并不你想要看到1 0字符串,而是1 0 字符串的ASC码。你想看到1 0值的话必需用它的ASC减48。 

你的str是个指针,不知道你还要定义一个pNext是做什么的? 

你把上面的10字符串保存成aa.txt(扩展名也可以是dat)放在当前目录。 

#include "stdio.h" 

#include "iostream.h" 

#include "string.h" 

#include "stdlib.h" 

#define N 50 

void main() 

FILE *f = NULL; 

int i=0,j=0; 

int Property[N][25]; 

char str[100]; 

f=fopen("aa.txt","rb"); 

if(f==NULL) {cout<<"Error, file don't open!"<<endl; return;} 

while(!feof(f)) 

fgets(str, 100, f); 

for(j=0;j<25;j++) 

Property[i][j] = str[j] - 48; 

cout<<Property[i][j]<< " "; 

cout<<endl; 

i++; 

getchar(); 

fclose(f); 

你读取数据的时候用的是fgets,这样的话一个1 0只会占用一个字符的位置,你定义数组的大小25就可以了。

如果你确实想用pNext的话,你上面的用法也有错误的。

把Property[i][j]=atoi(pNext);改成

Property[i][j]=atoi(*pNext); 

上面的是你取的是指针的地址,而不它指向的值,这也就是你出现的乱码。

温馨提示:内容为网友见解,仅供参考
第1个回答  2009-04-23
Property[i][j]=atoi(pNext);

【VC++读取文本文件里其中一列数据到一个数组中】
文本文件读取,只是字符串,所以根据你的格式,就需要查询空格的位置,用到的查找字符串函数是StrChr,然后把读入一行的字符串,根据空格的位置起,提取后面的字符串,即提取了你的角度值,剩下就是根据角度值的格式计算出实际值,同样是判断字符e所在位置,然后再读入e前面的值放入浮点变量,再读取e后面...

VC++,读取txt文件数据,并存入数组中。
include <iostream> using namespace std;define FRISTCLM 30000 define SECONDCLM 8 \/\/参数 Filename 为要读的文件名,如:readdd.txt 。int ReadFileToBUF(char * Filename,int bufdd[][SECONDCLM],int len){ FILE *fp=fopen(Filename,"r");if(fp == NULL)return 0;char buf[256],num...

用vc++逐行读取文本文件txt里面的数据,并且复制给数组
int data[MAX][8];int main(){ FILE *src = fopen(src,"r");int i,j;for(i = 0;i < MAX;i++){ fscanf(srcfile,"%d,%d,%d,%d,%d,%d,%d,%d",&data[i][0],&data[i][1],&data[i][2],&data[i][3],&data[i][4],&data[i][5],&data[i][6],&data[i][7]);...

c++中怎么把读取文件夹下的所有文件名存入数组
while((ptr = readdir(dir)) != NULL) \/\/循环读取目录数据 { printf("d_name : %s\\n", ptr->d_name); \/\/输出文件名 strcpy(file_list[i],ptr->d_name ); \/\/存储到数组 if ( ++i>=100 ) break;} closedir(dir);\/\/关闭目录指针 } 2、在windows平台下,如VC也有类似的操作函数...

C++中如何读取记事本中的数据,并另存为二维数组?
FILE *fp;char *filename = "F:\\\\VC\\\\m.dat";fp = fopen(filename,"rt");if(fp == NULL) { printf("不能打开数据文件:%s",filename);exit(1);} for(i = 0;i < M;i++) { fscanf(fp,"%d",&code);for(j = 0;j < N;j++) { fscanf(fp,"%f",&a[i][j]);printf...

C语言中如何读取文件中的汉字并将其存入数组中?
以文本方式读打开原文件;按字符方式读取文件,每读一个字符判断一下是否为汉字编码(<0),若是则存入字符数组,不是则跳过读取下一个字符,直到文件结束。设原文件在当前目录下,名为123.txt,举例代码如下:\/\/#include "stdafx.h"\/\/If the vc++6.0, with this line.#include "stdio.h"#...

vc++中文本文件数据读取问题
C盘根目录下数据文件a.txt,其内容为:51729 2000 7 4 60.0000 26559806.648 0.0104311679 54.069036031 168.097400204 34.273492608 89.725355246 7.92e-022 运行,在屏幕中输出已经读到动态数组vData中的数据:The contents in c:\\a.txt are:51729 2000 7 4 60.0000 26559806.648 0....

请问VC如何从一txt文档中读取数据用于数组操作?
看你局的例子,txt里面存的是float型数据。所以如下实现:(只写部分过程)int i=0;float a[10000];FILE *p;p=fopen(" 文件名.txt","r") ;while(p!=NULL){ fscanf(p,"%f",&a[i++]); \/*将txt数据读取存入a数组中*\/ } 然后就可以对这些数据进行操作。for(j=0;j...

请问如何用vc读取txt数据到数组中。
freopen("1.txt","r",stdin);double a[4][3];for(int i=0;i<4;i++)for(int j=0;j<3;j++)scanf("%lf",&a[i][j]);

C\/VC++ 将一个文件超过2M内容读到一个数组中,当定义数组大小超过1024*1...
用光了当然会报错挂掉,你改用堆内存就行了,即自己向操作系统要内存,用完记得释放,如 int *p = (int*)malloc(1024*1024*(sizeof(int)));就分配了一个1024*1024个整数的数组。用完要记得 free(p); p = NULL; 通常有多少个malloc就要对应有多少个free. 可能要包含 stdlib.h头文件。

相似回答