hey...can anyone show me what am doin wrong here?? cant get this program to loop till the user enters a character other than "y"....it prompts the first time and its a succes. prompts the second time but does not wait for response....

#include <stdio.h>
#include <string.h>
#define LEN 20
main()
{
	int PorC, pid, status;
	char path[LEN+1];
	char argu[LEN+1];
	char resp;
	do
 	{
		if ((PorC=fork())==0)
		{
			printf ("Enter the path name: ");
			scanf ("%s",path);
			printf ("Enter the argument: ");
			scanf ("%s",argu);
/*opens the program provided as the path..the path is in the  same directory as the main prog so the name of the prog is used*/
			execl (path, path, argu, 0);
			fprintf(stderr, "exec() call failed\n");
			exit(-1);
		}
		else
		{
			printf("this is parent");
			pid = wait(&status);
		//exit(-1);
		}
	printf("\nDo you wish to continue? (Y/N): ");
	scanf("%c", &resp);
	}while (resp == 'y');
}

the program pompts the user for a pathname and an argument... there is a main program that does the display of the argument..after the user enters the pathname and argument, the program then displays the argument if the pathname exists and then prompts the user to either continue or quit

scanf("%c", &resp);

The problem is with this part of the code.

When you get a prompt "Do you wish to continue? (Y/N): " you are typing in two charaters
1. 'y'
2. '\n'

so the second time it prompts it is assuming '\n' as input and exiting the loop.

so better use:

resp=getchar();

Happy coding,
Sukhmal

instead of this :-

printf("\nDo you wish to continue? (Y/N): ");
scanf("%c", &resp);

try this :-

char a;
-
-
-
-
-
a=getch();//or a=getche(), mind the difference between GETCH() AND GETCHE()

Now your normal code , i.e

if(a!='y'||a!='Y')
{
           do this....;
}
else
{
           do that;
}

Edited 3 Years Ago by Dani: Formatting fixed

This question has already been answered. Start a new discussion instead.