How will I capture a string or char input if I have a checker that is equated to zero because atoi/atof reads the string or char as zero Code: #include <stdio.h> #include <conio.h> #include <math.h> #include <stdlib.h> #include <string.h> int a(double sales,double sepcost) { double NRV; NRV=sales-sepcost; printf("The Net Realizable Value is: %.3lf\n",NRV); } int main() { double sales,sepcost; char error[128]; do{ system("cls"); printf("Please input your Sales Value: \n"); scanf("%s",&error); sales=atof(error); printf("Please input your Separable Cost: \n"); scanf("%s",&error); sepcost=atof(error); if(sales<0){ system("cls"); printf("Invalid input for Sales, Please try again!!\n"); system("pause"); } if(sepcost<0){ system("cls"); printf("Invalid input for Seperabe Cost, Please try again!!\n"); system("pause"); } }while(sales<0||sepcost<0); a(sales,sepcost); getch(); }
atoi and atof function will return the converted values. your checking the return value is 0 or not. instead of you can check the given string is digit or not using isdigit() or isalpha()
isdigit takes a char parameter and returns TRUE or FALSE depending on whether it's a digit or not. So the following will output 01: Code: printf("%c%c", isdigit('x')?'1':'0', isdigit('3')?'1':'0'); To determine whether input is valid you have to scan the string and see what you find. "123a456" is not a valid integer because 'a' is not a digit. "-2.35e+17" is a valid floating point number and the validation for that is more complex: optional sign, a digit, a dot, some digits, an e, optional sign, some digits.