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

2025-01-02 22:31:33
推荐回答(2个)
回答1:

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!"<

while(!feof(f)) 

fgets(str, 100, f); 

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

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

cout<

cout<

i++; 

getchar(); 

fclose(f); 

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

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

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

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

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

回答2:

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