我正在从一个文件中读取数字。当我尝试将每个数字放入一个双维数组时,它给出了我的错误。我怎么摆脱这个消息? 我的变数: FILE * fp; char line [80];
错误:从char *转换为int会失去精度
代码: -
#include<stdio.h>
#include<string.h>
int main()
{
FILE *fp;
char line[80],*pch;
int points[1000][10];
int centroid[1000][10];
float distance[1000][10];
int noofpts=0,noofvar=0,noofcentroids=0;
int i=0,j=0,k;
fp=fopen("kmeans.dat","r");
while(fgets(line,80,fp)!=NULL)
{
j=0;
pch=strtok(line,",");
while(pch!=NULL)
{
points[i][j]=(int)pch;
pch=strtok(NULL,",");
noofvar++;
j++;
}
noofpts++;
i++;
}
noofvar=noofvar/noofpts;
printf("No of points-%d\n",noofpts);
printf("No of variables-%d\n",noofvar);
return 0;
}
答案 0 :(得分:19)
答案 1 :(得分:10)
64 bit machine
上的正在编译时会发生此错误,但32 bit machine
可能不会发生此错误,因为char*
和{{1}的大小不同}。
int
上的为8,sizeof(char*)
为4
sizeof(int)
上的为4,sizeof(char*)
为4