I don't know how to capture a NULL because I am using the gets function in order to get the strings but the problem is that when I press the ENTER BUTTON it goes on and on..How can i capture if there is no input or the input is a NULL Here is the part in my program that makes me problematic.. Code: ................ ................ printf("First Name: "); gets(info[tCnt].fname); printf("Middle Name: "); gets(info[tCnt].mname); printf("Last Name: "); gets(info[tCnt].lname); printf("ID Number: "); gets(info[tCnt].id); printf("Birthday: "); gets(info[tCnt].bday); ................ ................ My full program Code: #include <stdio.h> #include <conio.h> #include <math.h> #include <stdlib.h> #include <string.h> typedef char SData[128]; struct Data{ SData fname,mname,lname,bday,id; }; typedef Data NData[10]; //Function to Display All Entries void DisplayAll(int size,NData info){ int i,j; for(i=0;i<size;i++){ system("cls"); printf("Full Name: %s %s %s\n",info[i].fname,info[i].mname,info[i].lname); printf("ID Number: %s\n",info[i].id); printf("Birthday: %s\n",info[i].bday); printf("Please press the spacebar to continue!!\n"); getche(); } } //Function to Search an Entry using ID Number void SearchIdNum(SData Input,NData info, int nCnt) { int i=0,loopext=0,j; do{ if(strcmpi(info[i].id,Input)==0){ system("cls"); printf("Full Name: %s %s %s\n",info[i].fname,info[i].mname,info[i].lname); printf("ID Number: %s\n",info[i].id); printf("Birthday: %s\n",info[i].bday); printf("Please press the spacebar to continue!!\n"); getche(); loopext=1; } else i++; }while(i<nCnt&&loopext==0); if(i>=nCnt) printf("ID Number does not exists\n"); getche(); } //Function to Search an Entry using Name void SearchName(SData Input,NData info,int nCnt,SData Input2,SData Input3){ int i=0,loopext=0,j; do{ if(strcmpi(info[i].fname,Input)==0&&strcmpi(info[i].mname,Input2)==0&&strcmpi(info[i].lname,Input3)==0){ system("cls"); printf("Name: %s %s %s\n",info[i].fname,info[i].mname,info[i].lname); printf("ID Number: %s\n",info[i].id); printf("Birthday: %s\n",info[i].bday); printf("Please press the spacebar to continue!!\n"); getche(); loopext=1; } else i++; }while(i<nCnt&&loopext==0); if(i>=nCnt) printf("Name does not exists\n"); getche(); } //Function to Edit an Entry (Name) void Edit1(SData Input,NData info, int nCnt){ char cDump; int i=0,j,loopext = 0; do{ if(strcmpi(info[i].id,Input) == 0){ system("cls"); printf("ID Number: %s\n",info[i].id); printf("Birthday: %s\n",info[i].bday); printf("First Name: "); gets(info[i].fname); printf("Middle Name: "); gets(info[i].mname); printf("Last Name: "); gets(info[i].lname); getche(); loopext = 1; } else i++; }while(i<nCnt && loopext == 0); if(i>=nCnt) printf("ID Number does not exists\n"); } //Function to Edit an Entry (ID Number) void Edit2(SData Input,NData info, int nCnt){ char cDump; int i=0,j,loopext = 0; do{ if(strcmpi(info[i].id,Input) == 0){ system("cls"); printf("Full Name: %s %s %s\n",info[i].fname,info[i].mname,info[i].lname); printf("Birthday: %s\n",info[i].bday); printf("ID Number: "); gets(info[i].id); getche();loopext = 1; } else i++; }while(i<nCnt && loopext == 0); if(i>=nCnt) printf("ID Number does not exists\n"); } //Function to Edit an Entry (Birthday) void Edit3(SData Input,NData info, int nCnt){ char cDump; int i=0,j,loopext = 0; do{ if(strcmpi(info[i].id,Input) == 0){ system("cls"); printf("Full Name: %s %s %s\n",info[i].fname,info[i].mname,info[i].lname); printf("ID Number: %s\n",info[i].id); printf("New Birthday: "); gets(info[i].bday); getche();loopext = 1; } else i++; }while(i<nCnt && loopext == 0); if(i>=nCnt) printf("ID Number does not exists\n"); } //Function to Remove an Entry void RemoveEntry(SData Input,NData info, int *nCnt){ int j = 0,i; int EntryFound = 1; while(EntryFound!=0 && j <*nCnt){ if(strcmpi(Input,info[j].id)== 0){ EntryFound = 0; printf("The Entry was searched, found and deleted.\n"); getche(); } else j++; } if(j<*nCnt){ for(i = j; i<*nCnt; i++){ system("cls"); strcpy(info[i].fname,info[i+1].fname); strcpy(info[i].mname,info[i+1].mname); strcpy(info[i].lname,info[i+1].lname); strcpy(info[i].id,info[i+1].id); strcpy(info[i].bday,info[i+1].bday); } *nCnt-=1; } else printf("Entry does not exists\n"); getche(); } main(){ NData info; SData input,input1,input2,input3; int selection,QA=0,nCnt=0,tCnt=0,ed; char error[128]; do{ system("cls"); printf("Database Selection Screen\n\n"); printf("1 - Add an Entry\n"); printf("2 - Remove an Entry\n"); printf("3 - Edit an Entry\n"); printf("4 - Search Entry by Name\n"); printf("5 - Search Entry by ID Number\n"); printf("6 - Display All Entries\n"); printf("7 - Exit\n"); fgets(error,128,stdin); selection=atoi(error); switch(selection){ case 1://Add an Entry if(nCnt <=10){ tCnt = nCnt; do{ system("cls"); printf("First Name: "); gets(info[tCnt].fname); printf("Middle Name: "); gets(info[tCnt].mname); printf("Last Name: "); gets(info[tCnt].lname); printf("ID Number: "); gets(info[tCnt].id); printf("Birthday: "); gets(info[tCnt].bday); tCnt++; do{ system("cls"); printf("Do you want to add another Entry?\n\n"); printf("1 - Yes\n"); printf("2 - No\n"); fgets(error,128,stdin); QA=atoi(error); switch(QA){ case 1: break; case 2: break; default: system("cls"); printf("Invalid input. Please try again!!!\n"); printf("Please press the spacebar to continue!!"); getche(); break; } }while(QA>2||QA<1); }while(QA!=2 &&tCnt<10); nCnt=tCnt; } else printf("The Database is Maxed Out\n"); break; case 2://Remove an Entry system("cls"); printf("\nInput the ID Number: "); gets(input); RemoveEntry(input,info,&nCnt); break; case 3://Edit an Entry do{ system("cls"); printf("Edit an Entry\n\n"); printf("1 - Name\n"); printf("2 - ID Number\n"); printf("3 - Birthday\n"); fgets(error,128,stdin); ed=atoi(error); switch(ed){ case 1: system("cls"); printf("Input the ID Number: "); gets(input); Edit1(input,info,nCnt); break; case 2: system("cls"); printf("Input the ID Number: "); gets(input); Edit2(input,info,nCnt); break; case 3: system("cls"); printf("Input the ID Number: "); gets(input); Edit3(input,info,nCnt); break; default: system("cls"); printf("Invalid input. Please try again!!!\n"); printf("Please press the spacebar to continue!!"); getche(); break; } }while(ed>3||ed<1); break; case 4://Search an Entry using Name system("cls"); printf("Input the First Name: "); gets(input1); printf("Input the Middle Name: "); gets(input2); printf("Input the Last Name: "); gets(input3); SearchName(input1,info,nCnt,input2,input3); break; case 5://Search an Entry using ID Number system("cls"); printf("Input the ID Number: "); gets(input); SearchIdNum(input,info,nCnt); break; case 6://Display all Entries DisplayAll(nCnt,info); break; case 7://Exit exit(1); break; default://Program redirects invalid input system("cls"); printf("Invalid input. Please try again!!!\n"); printf("Please press the spacebar to continue!!"); getche(); break; } }while(selection!=7||QA==2); }
You can check the null by checking the input using the strcmp function. Code: #include<stdio.h> #include<string.h> main() { char str[100]; printf("Enter the value : "); gets(str); if(strcmp(str,"\0")==0) { printf("Null entered \n"); } else { printf("%s",str); } } Try to avoid gets,instead you can use fgets . The same requirement using fgets is, Code: #include<stdio.h> #include<string.h> #include<stdlib.h> main() { char str[100]; printf("Enter the value : "); if(fgets (str,sizeof(str),stdin)==NULL) { printf("fgets : read error \n"); exit(1); } if(strcmp(str,"\n")==0) // Because fgets store the '\n'. { printf("Null entered \n"); } else { printf("%s",str); } } cheers