I've run into a snag in a program of mine where part of what I entered in at the start of run-time, instead of the current value within printf() is being printed out.
After failing with fflush() and setbuf(), I tried the following approach
void BufferFlusher()
{
int in=0;
char c;
while( (in = getchar()) != NULL)
{
c = (char) in;
c = NULL;
fputc((int)c,stdin);
}
}
however this has not improved things (even with replacing getchar() with fgetc(stdin) ).
It's not clear (to me) what you are trying to do here: why can you not use fflush to flush a buffer?
Some immediate observations, though:
getchar returns EOF if nothing is read, rather than a NULL pointer, so don't compare its return value to NULL.
Writing to stdin is unlikely to succeed -- check the return value of fputc.
First off I'm not sure what you're trying to do here but to reinforce what has already been stated by spirtle the code needs to be rectified.
There's no need to cast the int read from standard input to char so the char c; c = (char) in; and c = NULL; statements are unneccessary as this one suffices.
int in;
The terminal condition for the while loop should check for EOF instead of NULL
Basically Im trying to get a simple prompt being displayed (via printf() ) and have a user respond to it accordingly (via scanf() ).
However this is difficult because the prompt is not being displayed, and previous input I entered in (via another printf() and scanf() ) seems to appear in its place.
Your code has neither the printf() nor scanf() functions so I am still at a loss to understand what exactly is going on here. You need to attach the entire code and explain what it is doing otherwise with the scant information presented in your post it's not making any sense.
a) Prompt the user to enter in a folder they wish to browse to
b) Rename the folder via the use of a prompt and a system() call to mv
c) Within the folder, replace all subfolder names containing a certain string with a new string
d) Copy the renamed folder and the modified subfolder names to an external location
e) At the destination, repeat c)
I am experiencing my prompting issue at b).
This is the line of code at b)
new_src = (char *)malloc(20);
printf("\nEnter new directory name: ");
scanf("%s",new_src);
After debugging, I have found that new_src contains a portion of the char *ptr value I entered into a), which then mysteriously gets printed out at the printf() in b) at the scanf() part
FYI I used multiple calls to printf("\n===================") yesterday before b) and it seemed to alleviate the issue, however this came from a trial and error, rather than a methodical approach
The entire script is in the word doc file. You can find the functions individually in the text files
as far as i know, all functions using a FILE * do buffered I/O. This means, that data is not written immediately, but when the kernel thinks, it is the right time. This is normally the case, when a line is finished (when there is a \n). But a fflush() does also the trick. In your case you have to put an fflush(stdout); between printf() and scanf(). Any other location does not help, because the scanf is the location, where your program waits for user input.