在 Ubuntu 中运行这个 C 程序时,我看到的是闪烁的光标而不是输出

在 Ubuntu 中运行这个 C 程序时,我看到的是闪烁的光标而不是输出

这是我的代码,用于查找两点之间的距离。我的作业要求必须使用函数,因此需要单独使用一个函数来查找距离。执行代码时,我没有遇到任何语法错误,但只出现闪烁的光标。我是 C 语言的初学者。

我的代码:

#include <stdio.h>
#include <math.h>
#include <stdlib.h>

float distance(float *x1, float *y1, float *x2, float *y2);

int main()
{ printf("Input coordinates as x1,y1,x2,y2:\n");
float x1,y1,x2,y2;
scanf("%f %f %f %f ",&x1,&y1,&x2,&y2);

printf("Coordinates are : (%f,%f) and (%f,%f)\n",x1,y1,x2,y2);
printf("%f",distance (&x1,&y1,&x2,&y2));
return 0;
}

float distance(float *x1, float *y1, float *x2, float *y2)
{  
   float d= sqrt(pow((*x1-*x2),2)+pow((*y1-*y2),2));
printf("%f", d);
return d;
}

编译时:gcc -o 1 1.c -lm 输出:

Input coordinates as x1,y1,x2,y2:
1 2 3 4

就是这样。光标一直闪烁,没有提供任何输出。

另外,我尝试在各个点输入打印语句。之后的任何打印均scanf不起作用。

答案1

你问的问题不是 Ubuntu 特有的,而是 C 编程特有的。我建议你问这样的问题堆栈溢出——这对您自己也有好处,因为您会接触到不同的受众。

无论如何,您应该了解 scanf () 函数,因为它会尝试匹配您在键盘上输入的内容。这包括格式化字符串中的任何空格、换行符等。然后,您还需要使用“回车键”结束标准输入。

对于您的问题,请更改:

scanf("%f %f %f %f ",&x1,&y1,&x2,&y2);

到:

scanf("%f %f %f %f",&x1,&y1,&x2,&y2);

(删除格式字符串末尾的空格。)然后它应该可以按预期工作。

就我个人而言,我一直使用 scanf 一次读取一个值。如示例所示这里。我承认这只是我逃避你所看到的问题的方式。

答案2

两件事情:

  1. gcc用于编译,而不是运行代码。
  2. -oflag 指定要创建的新文件的名称。由于您运行 gcc 并且没有错误,这意味着它将 C 代码编译成您用 flag 指定的1.c文件。因此,您只需在终端中运行即可。1-o./1

请注意,使用数字作为可执行文件名称是一种不好的做法,也是不好的命名约定。请改用,并在终端中gcc -o distance -lm 1.c运行./distance

还要注意,因为我们只给出了文件名,所以它会在当前工作目录中创建可执行文件。这就是为什么你需要./

相关内容