如何在从文件读取的 C 中将 char 转换为 int?
How to convert from char to int in C reading from a file?
我正在尝试读取 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
如何在输出函数中将字符转换为数组?我也试过 stoi 函数,但我得到错误 "stoi is not in scope"
在您的 output() 函数中,buff[i] 只是一个字符,它不是 atoi() 的字符串 (char*)。您应该使用 strtok() 使用分隔符 space 将每个标记传递给 atoi()。
我正在尝试读取 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
如何在输出函数中将字符转换为数组?我也试过 stoi 函数,但我得到错误 "stoi is not in scope"
在您的 output() 函数中,buff[i] 只是一个字符,它不是 atoi() 的字符串 (char*)。您应该使用 strtok() 使用分隔符 space 将每个标记传递给 atoi()。