В вашем коде есть некоторые ошибки.Я постараюсь объяснить.Вы слишком много раз объявляли свои переменные.А поскольку у вас фиксированный цикл, вам не нужно считать измерения, вы всегда будете читать 10 измерений.
Ниже приведен код с некоторыми изменениями.Не стесняйтесь спрашивать об этом.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAXIMUM_MEASURMENT 10
int enter(int MeasurmentData[])
{
char input[100];
int nrMeasurement = 0;
// reseting Measurment data
for(int i=0;i<MAXIMUM_MEASURMENT;++i) MeasurmentData[i] = 0;
for(int i=0;i<MAXIMUM_MEASURMENT;++i)
{
scanf("%99s", input);
if(strcmp(input, "q") == 0) {
break;
}
MeasurmentData[i] = (int) strtol(input, (char **)NULL, 10);
nrMeasurement++;
}
return nrMeasurement;
}
void showMeasurments(int* MeasurmentData, int length) {
int i = 0;
printf(" ======== Measurment ======== \n");
for(i = 0; i < length; i++) {
printf("%d ", MeasurmentData[i]);
}
printf("\n");
}
int main()
{
int MeasurmentData[MAXIMUM_MEASURMENT];
int nrOfmeasurments;
char menuoption;
while (1)
{
printf("Measurment tool 2.0\n" "v (View)\n" "e (Enter)\n" "c (Compute)\n" "r (Reset)\n" "q (Quit)\n enter your option:\n");
scanf(" %c", &menuoption);
if (menuoption =='e') // enter values
{
enter(MeasurmentData);
}
else if(menuoption == 'v') // view values
{
// show
showMeasurments(MeasurmentData, MAXIMUM_MEASURMENT);
}
else if(menuoption == 'c')
{
}
if(menuoption == 'q')
{
printf("Exiting Measurment tool 2.0\n");
break;
}
}
return 0;
}
Редактировать: я обновил код.Итак, я прочитал комментарии к вашему вопросу, и там вы немного лучше объяснили, чего вы пытаетесь достичь.Так как у вас есть требование нажать 'q', чтобы остановить чтение значений.Я должен прочитать все измерения в виде строки и преобразовать в целое число, если это не символ q.
Редактировать 2: Спасибо @ user3629249 за то, что он указал на некоторые недостатки в коде, который обновляется с его предложениями.