如何从文件中读取C语言中的char到int?

问题描述 投票:0回答:1

我正在尝试读取C语言的文件,该文件每行有四个数字,代表两个点的坐标,然后我试图找到两个点之间的距离。为此,我正在逐行读取文件行,并将其作为char数组获取。以下是我所做的。

我从read()调用的输出函数

void output(char *buff){
    int co1,co2,co3,co4;
    co1 = atoi(buff[0]);
    co2 = atoi(buff[2]);
    co3 = atoi(buff[4]);
    co4 = atoi(buff[6]);
    printf("(%d,%d) lies on the %s,(%d,%d) lies on the %s, distance is %f.\n",co1,co2,quadrant(co1,co2),co3,co4,quadrant(co3,co4),distance(co1,co2,co3,co4));

}

读取我从main调用的函数。

int read(){
    FILE *file;
    char buff[255];
    file = fopen("point.dat", "r");
    while(!feof(file)){
        fgets(buff,255,file);
        output(buff);
    }
    return !feof(file);
}

主要功能

int main()
{
    read();
    return 0;

}

但是这样做时,我遇到了错误。

[Error] invalid conversion from 'char' to 'const char*' [-fpermissive]

point.dat的数据是

0 0 3 4
-1 -4 5 6
-1 3 -1 -2
4 -5 -5 -6
3 5 -6 5
0 5 5 5 
-5 0 0 -5

如何在输出函数中将char转换为数组?我也尝试了stoi函数,但是出现“ stoi不在范围内”的错误]

c char int
1个回答
0
投票

在output()函数中,buff [i]只是一个字符,不是atoi()的字符串(char *)。您应该使用strtok()使用定界符空间对令牌进行抛光,然后将每个令牌传递给atoi()。

© www.soinside.com 2019 - 2024. All rights reserved.