19

ファイルから数値を読み取っています。各数値を2次元配列に入れようとすると、以下のエラーが発生します。このメッセージを取り除くにはどうすればよいですか。私の変数: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;
}
4

2 に答える 2

27

これは問題のある行です:

points[i][j]=(int)pch;

に置き換える必要があります

points[i][j]=atoi(pch);

atoi10進表現の整数を表すC文字列を。に変換する関数ですint

于 2012-09-14T02:35:02.673 に答える
13

このエラーは、でのコンパイル中に発生しますが、とのサイズに違いがあるため64 bit machine、では発生しない可能性があります。32 bit machinechar*int

64ビットsizeof(char*)は8でsizeof(int)4です

32ビットsizeof(char*)は4であり、sizeof(int)4です。

于 2013-06-13T08:00:46.400 に答える