Help on getchar


 
Thread Tools Search this Thread
Top Forums Programming Help on getchar
# 1  
Old 12-05-2010
Help on getchar

I wanted to make a simple program that writes chracters in a file but i didnt want to press enter .So i found the getchar which doesnt need enter.If i pass (int) getchar to putc ,in the file it shows a P character.The (int) getchar says it is equal to1734747216 so i do (int) getchar-1734747216 and it gives -62259200 and i cant understand why doesnt it give 0 and what is the P symbol since i didnt press any button?So i found that P symbol is the value of (char*)getchar and i wrote this code

Code:
#include <stdio.h>

int main()
{
FILE* text;
char* compare=(char*)getchar;
int temp=0;
text=fopen("C:\\cat.txt","w+");
while(1)
  {
  if ((char*)( temp = (int)getchar )!= compare) 
    {
      putc(temp,text);
    }
  }
  return(0);
}

Also if i change the != with == then the txt has iside it a P symbol as expected but the one with the != still doesnt work as expected
by me Smilie

Last edited by fireblast; 12-05-2010 at 12:43 AM..
# 2  
Old 12-05-2010
1. getchar is an function, not a variable. So, probably you have to use getchar() instead of getchar. This explains the weird value of getchar.

2. getchar returns the integer _value_ of character entered. Casting variables compare and temp to (*char) is wrong. Just leave them as int.

3. The comparison of compare and temp will not work because characters will be analysed by program on after flushing the buffer (<ENTER> was pressed).

The following code writes characters to the file. (You need to press <ENTER> once before entering EOF - <CTRL>D in UNIX <CTRL>Z in Windows)
Code:
#include <stdio.h>

int main() {
    FILE* text;
    int temp=0;

    text=fopen("cat.txt","w+");
    while((temp = getchar()) != EOF) {
      putc(temp,text);
    }
    fclose(text);
    return(0);
}

Quote:
Originally Posted by fireblast
I wanted to make a simple program that writes chracters in a file but i didnt want to press enter .So i found the getchar which doesnt need enter.If i pass (int) getchar to putc ,in the file it shows a P character.The (int) getchar says it is equal to1734747216 so i do (int) getchar-1734747216 and it gives -62259200 and i cant understand why doesnt it give 0 and what is the P symbol since i didnt press any button?So i found that P symbol is the value of (char*)getchar and i wrote this code

Code:
#include <stdio.h>

int main()
{
FILE* text;
char* compare=(char*)getchar;
int temp=0;
text=fopen("C:\\cat.txt","w+");
while(1)
  {
  if ((char*)( temp = (int)getchar )!= compare) 
    {
      putc(temp,text);
    }
  }
  return(0);
}

Also if i change the != with == then the txt has iside it a P symbol as expected but the one with the != still doesnt work as expected
by me Smilie
# 3  
Old 12-06-2010
Also, you're wrong. getchar does wait for you to press enter.
# 4  
Old 12-06-2010
Quote:
Originally Posted by Corona688
Also, you're wrong. getchar does wait for you to press enter.
I said "The following code writes characters to the file. (You need to press <ENTER> once before entering EOF - <CTRL>D in UNIX <CTRL>Z in Windows)"
Can you, please tell me in what I am wrong?
# 5  
Old 12-06-2010
That was a crosspost, I was replying to the OP, who said:
Quote:
I wanted to make a simple program that writes chracters in a file but i didnt want to press enter .So i found the getchar which doesnt need enter.
Login or Register to Ask a Question

Previous Thread | Next Thread

5 More Discussions You Might Find Interesting

1. Programming

What is the difference between printf and putchar() or scanf and getchar() ?

Im a newbie to programming language, i found tat there r these function called printf and putchar() as well as scanf and getchar(), im curious abt why do dey hav these 2 different function although dey r doing the same instruction? :confused: (13 Replies)
Discussion started by: kris26
13 Replies

2. Programming

How to kill disowned process which calls getchar() in code

Hi, What happens to process state when getchar() is called? I wrote a C code in which I call getchar() somewhere down the road. I forgot about that, I started the process, put it in bg and disowned it using "disown". Now, how do I see where that process has gone/how do kill it? Thanks, Amrut (1 Reply)
Discussion started by: 17amrut29
1 Replies

3. Programming

How to skip getchar in C?

Hi, I would like to read an input from keyboard using getchar. However, if no input (No Carriage return/new line none whatsoever) is given after say, 5 seconds, I would like to skip the getchar and move on. How do I do this in C. I'm using GNU compiler set. Thanks, (5 Replies)
Discussion started by: cprogdude
5 Replies

4. Shell Programming and Scripting

Bash replacement to getchar

There's a replacement in bash for getchar or get functions of C and C++?Those functions read the next char avaliable in the input stream. I've tried something like: OLD_STTY=`stty -g` stty cbreak -echo look=`dd if=/dev/tty bs=1 count=1 2>/dev/null` stty $OLD_STTY But it is not working... (3 Replies)
Discussion started by: Asafe
3 Replies

5. UNIX for Dummies Questions & Answers

getchar()

hey everyone! got another problem here. how would i use the getchar() in a prompt: Press any key to continue the way i did it was to define a char variable named ch and then wrotechar ch ... ch = getchar(); printf("Press any key to continue"); getchar():if you press enter it exits, but... (2 Replies)
Discussion started by: primal
2 Replies
Login or Register to Ask a Question