gpt4 book ai didi

objective-c - 将 .txt 输入处理为笛卡尔坐标

转载 作者:太空宇宙 更新时间:2023-11-04 03:39:26 25 4
gpt4 key购买 nike

练习:使用 Obj C 和 C,创建一个命令行应用程序,它将:• 获取包含以下格式的笛卡尔坐标的 txt 文件:

(2;9)
(5;6)
...

•(其他技术要求)

问题:处理输入数据的最佳方式是什么?C有fscanffgetcfgets等函数。如果我理解正确——我们不能使用 fgets——因为它是针对字符而不是整数/ float / double 。它会读取每个字符。我们不能使用 fgetc - 因为它只返回转换为 int 的 1 个字符(流中的下一个字符)。

我有几种方法,但到目前为止没有一种有效。首先 - 使用 for 循环。我想先计算坐标对的数量,然后将 .txt 文件中的数据整理成 x 和 y 坐标的 2 个数组。:

float xCoordinate [MAXSIZE] = {0.0};
float yCoordinate [MAXSIZE] = {0.0};

float x;
float y;
FILE *handle;
handle = fopen ("points.txt", "r");
int ch;
int n;

ch=fgetc(handle)!=EOF; //error. This will read every character including ( ) and ; .
//Maybe I omit this loop condition?

for (n=0; n<=ch ; (fscanf(handle, "(%f;%f)", &x, &y) )
{
xCoordinate [n+1] = x;
yCoordinate [n+1] = y;
}

最佳答案

只要 fscanf 返回两个成功读取的项目并且 n 小于 MAXSIZE,就应该读取文件。

float xCoordinate [MAXSIZE] = {0.0};
float yCoordinate [MAXSIZE] = {0.0};

float x;
float y;
FILE *handle;
int n = 0;

if ( ( handle = fopen ("points.txt", "r")) == NULL)
{
printf ("could not open file\n");
return 1; // or exit(1);
}
while ( ( fscanf(handle, " (%f;%f)", &x, &y) ) == 2)
{
xCoordinate[n] = x;
yCoordinate[n] = y;
n++;
if ( n >= MAXSIZE)
{
break;
}
}

fclose ( handle);

关于objective-c - 将 .txt 输入处理为笛卡尔坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29854951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com