Как конфертировать из char в int в C чтение из файла? - PullRequest
0 голосов
/ 05 апреля 2020

Я пытаюсь прочитать файл в C, который имеет четыре числа в строке, которые представляют координаты двух точек, а затем я пытаюсь найти расстояние между двумя точками. Для этого я читаю строки файла одну за другой и получаю их как массив символов. Вот что я сделал.

Функция вывода, которую я вызываю из 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 в массив в выходной функции? Я тоже попробовал функцию стои, но я получил ошибку, что "стои не в области видимости"

1 Ответ

0 голосов
/ 05 апреля 2020

В вашей функции output () buff [i] - это только один символ, который не является строкой (char *) для atoi (). Вы должны использовать strtok () для наложения на токены, используя пробел, и затем передавать каждый токен atoi ().

...