Voici mon code pour trouver la distance entre deux points. Mon affectation rend obligatoire l'utilisation de fonctions, d'où la création d'une fonction distincte pour la recherche de la distance. Je ne reçois aucune erreur de syntaxe, mais seulement un curseur clignotant lorsque j'exécute le code. Je suis débutant en C.
Mon code:
#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;
}
pendant la compilation: gcc -o 1 1.c -lm sortie:
Input coordinates as x1,y1,x2,y2:
1 2 3 4
C'est ça. Le curseur continue de clignoter sans fournir de sortie.
De plus, j'ai essayé de mettre en forme des déclarations imprimées à différents moments. Toute impression après le scanf
ne fonctionne pas.
La question que vous posez n’est pas spécifique à Ubuntu mais à la programmation en C. Je vous suggérerais de poser ces questions à Stackoverflow - c'est également pour votre propre bénéfice, car vous atteindrez un public différent.
Quoi qu'il en soit, vous devriez lire la fonction scanf () car elle tente de faire correspondre ce que vous tapez au clavier. Cela inclut tous les espaces, les nouvelles lignes, etc. que vous avez dans la chaîne de formatage. Ensuite, vous devez également mettre fin à votre saisie en standard avec la "touche Retour".
Pour votre problème, changez:
scanf("%f %f %f %f ",&x1,&y1,&x2,&y2);
à:
scanf("%f %f %f %f",&x1,&y1,&x2,&y2);
(Supprimez l'espace à la fin de la chaîne de formatage.) Ensuite, cela devrait fonctionner comme prévu.
Personnellement, j'ai toujours utilisé scanf pour lire une valeur à la fois. Comme indiqué dans l'exemple ici . J'admets que ce n'était que ma façon d'éviter le problème que vous rencontrez.
Deux choses:
gcc
est destiné à la compilation, pas à l'exécution de code.-o
flag spécifie le nom du nouveau fichier à créer. Parce que vous exécutez gcc et qu'il n'y a pas d'erreur, cela signifie que le code C 1.c
a été compilé dans un fichier 1
que vous avez spécifié avec l'indicateur -o
. Ainsi, vous pouvez simplement exécuter ./1
dans le terminal.Notez que l'utilisation de nombres pour les noms de fichiers exécutables est une mauvaise pratique et une mauvaise convention de dénomination. Utilisez gcc -o distance -lm 1.c
à la place et exécutez ./distance
dans le terminal.
Notez également que puisque nous donnons le nom nu du fichier, celui-ci créera un exécutable dans le répertoire de travail en cours. C'est pourquoi vous avez besoin de ./