Я кодирую калькулятор, который работает на cmd. Я в основном закончен для операций +, -, /, * и двух чисел, но у меня есть эта ошибка. Я искал эту ошибку, но все документы касаются функций файла. Я не использую функцию файла. но все же я получаю эту ошибку:ошибка времени выполнения: ошибка отладки не выполнена
Ошибка отладки не удалась! программа: ... все studio2012 .... файл: F: \ дд \ vctools \ crt_bld \ self_x86 \ элт \ SRT \ strtol.c линия: 94
выражение: НПТР = NULL
коды:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
char define(char input[]);
float math(int sayi[], char operation);
void main()
{
int sayi[100];
char input[100];
char inputCpy[100];
const char functions[] = "+,-,/,*";
char *token;
char operation;
float result;
int i=1;
printf("welcome to my simple cmd calculator!\n what do you want to know?\n");
scanf("%s", input);
strcpy(inputCpy,input);
token = strtok(input, functions);
sayi[0]=atoi(token);
while(token != NULL)
{
token = strtok(NULL, functions);
sayi[i]=atoi(token);
i++;
}
printf ("sayi1=%d sayi2=%d", sayi[0], sayi[1]);
operation = define(inputCpy);
printf("operation = %c\n", operation);
result = math(sayi,operation);
printf ("result = %.2f\n", result);
system("pause");
}
char define(char input[])
{
char operation;
for (int i=0; i<strlen(input); i++)
{
if(!isdigit(input[i]))
{
operation = input[i];
break;
}
}
return operation;
}
float math(int sayi[], char operation)
{
float result=0;
switch(operation)
{
case '+':
result = sayi[0]+sayi[1];
break;
case '-':
result = sayi[0]-sayi[1];
break;
case '*':
result = sayi[0]*sayi[1];
break;
case '/':
if(sayi[1]!='0')
{
result = sayi[0]/sayi[1];
}
else
{
printf ("wtf!! you can't divide by 0!");
}
break;
default:
printf("did you mean \"i don't know maths\"");
}
return result;
}
перспективе. – solohane