[英]How to convert from char to int in C reading from a file?
I am trying to read a file in C which has four numbers per line which represents coordinates of two points and then I am trying to find the distance between the two points.我正在尝试读取 C 中的文件,其中每行有四个数字,代表两点的坐标,然后我试图找到两点之间的距离。 For this, I am reading the file lines one by one and I am getting it as a char array.为此,我正在逐行读取文件行,并将其作为 char 数组获取。 Below is what I have done.以下是我所做的。
Output function which I am calling from read()我从 read() 调用的 Output function
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));
} }
Read function which I am calling from main.阅读我从 main 调用的 function。
int read(){
FILE *file;
char buff[255];
file = fopen("point.dat", "r");
while(!feof(file)){
fgets(buff,255,file);
output(buff);
}
return !feof(file);
}
Main function主function
int main()
{
read();
return 0;
}
But while doing so, I am getting below error.但是在这样做的同时,我遇到了错误。
[Error] invalid conversion from 'char' to 'const char*' [-fpermissive]
The data of point.dat is 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
How can I convert char to array in output function?如何在 output function 中将 char 转换为数组? I tried stoi function too, but I got error that "stoi is not in scope"我也尝试了 stoi function,但我收到错误消息“stoi 不在范围内”
In your output() function, buff[i] is only one char which is not a string (char*) for atoi().在您的 output() function 中,buff[i] 只是一个字符,它不是 atoi() 的字符串 (char*)。 You should use strtok() to buff into tokens using the delimiter space and then pass each token to atoi().您应该使用 strtok() 使用定界符空间将标记转换为标记,然后将每个标记传递给 atoi()。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.