Мне трудно использовать командную строку, чтобы взять переменные (записанные в командной строке) и использовать их в программе. Идея состоит в том, чтобы я скомпилировал программу, используя:
gcc main.c
и запустите его, запустив созданный a.exe с последующими аргументами.
следующим образом:
C: \ Users \ Pc \ Desktop \istance> gcc main.c
C: \ Users \ Pc \ Desktop \istance> a.exe 0,0005 1,5 160
48.000000 49.000000 49.000000 Недостаточно аргументов
Последняя строка - это значение, полученное мной из кода, которое не соответствует действительности, как видно из приведенных мною аргументов.
А также тот факт, что код завершается оператором if "Недостаточно аргументов". Это снова сбивает с толку, так как * argv [] начинается с 0 * argv [0], который должен быть равен "a.exe", и поэтому следующие аргументы должны = * argv [1] ... ect
Мой код:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
float areaOfcircle(float radius_circle)
{
float area_circle;
area_circle = M_PI * radius_circle * radius_circle;
return area_circle;
}
void resitance_current(float length, float area_circle, float voltage, float* resistance, float* current)
{
float resistivity;
resistivity = 1.782*pow(10, -8);
*resistance = ((resistivity*length) / area_circle);
*current = (voltage / *resistance);
}
int main(int argc, char *argv[])
{
float radius, voltage, length, current, resistance;
float length_u, length_l;
voltage = *argv[1];
length = *argv[2];
radius = *argv[3];
printf("%f %f %f", voltage, length, radius);
//char response, yes;
// take radius as input
//printf("Enter the radius of wire : ");
//scanf("%f", &radius);
if (argc != 3)
{
printf("Not enough arguments supplied");
}
else
{
if (radius < 0)
{
exit(1);
}
else
{
//printf("Enter the Voltage of circuit : ");
//scanf("%f", &voltage);
if (voltage < 0)
{
exit(1);
}
else
{
//printf("Enter the Length of Wire : ");
//scanf("%f", &length);
if (length < 0)
{
exit(1);
}
else
{
resitance_current(length, areaOfcircle(radius), voltage, &resistance, ¤t);
printf("Resistance = %f , Current = %f\n", resistance, current);
printf("\nEnter the Upper Length of Wire : ");
scanf("%f", &length_u);
printf("\nEnter the Lower Length of Wire : ");
scanf("%f", &length_l);
if ((length_l < 0) || (length_l >= length_u))
{
exit(1);
}
else
{
for(length_l = length_l; length_l<=length_u; length_l++)
{
length = (length_l + 1);
resitance_current(length, areaOfcircle(radius), voltage, &resistance, ¤t);
printf("\nLength = %0.3f Resistance = %0.3f , Current = %0.3f", length, resistance, current);
}
}
}
}
}
}
return 0;
}
В строках 23-25 я пытаюсь присвоить имена переменных предоставленным аргументам. сделать чтение кода проще.
Основная проблема, с которой я пытаюсь найти помощь, заключается в том, как получить (целые числа / числа с плавающей запятой, которые считываются / вводятся из командной строки после имени program.exe и правильно используются в коде.
* Код был предварительно написан, и это был последний шаг, поэтому, если я что-то пропустил в коде, пожалуйста, помогите с этим, спасибо заранее. Надеюсь, вы можете помочь:)