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

Say*_*jee 1 compiling gcc printing 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;
}
Run Code Online (Sandbox Code Playgroud)

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

Input coordinates as x1,y1,x2,y2:
1 2 3 4
Run Code Online (Sandbox Code Playgroud)

就是这样。光标一直闪烁而不提供任何输出。

此外,我尝试在不同的点放入打印语句。之后的任何打印scanf都不起作用。

Ray*_*Ray 5

您问的问题不是针对 Ubuntu 而是针对 C 编程的。我建议你在Stackoverflow 上提出这样的问题——这也是为了你自己的利益,因为你会接触到不同的受众。

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

对于您的问题,更改:

scanf("%f %f %f %f ",&x1,&y1,&x2,&y2);
Run Code Online (Sandbox Code Playgroud)

到:

scanf("%f %f %f %f",&x1,&y1,&x2,&y2);
Run Code Online (Sandbox Code Playgroud)

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

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