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); 上面的是你取的是指针的地址,而不它指向的值,这也就是你出现的乱码。
Property[i][j]=atoi(pNext);