Basic C programming

vivekgupta's Avatar, Join Date: Jun 2012
Light Poster
#include<stdio.h>
void main()
{
printf("%d",printf("Computer"));
}



has a output = 8

Why ? please explain someone.
shabbir's Avatar, Join Date: Jul 2004
Go4Expert Founder
Can you explain what is %d used for and that would give you your answer.
pein87's Avatar
Ambitious contributor
why are you making two calls to printf for? also you formating is returning the length of the text computer. Computer is 8 characters long. when using printf you need to use a format that goes with your data type. Your using decimal %d instead of string %s and making an additional call to printf as well. Try this

Code: C
#include<stdio.h>
void main()
{
printf("%s","Computer");
}

additionally you need to use some sort of debugger or make a scanf reference to see the output.

Code: C
#include<stdio.h>
void main()
{
printf("%s","Computer");
char i = scanf("i");
}

in practice you don't call scanf like that(without formatting) but it will exit the program one you press enter allowing you to check the output. I'd say use system("PAUSE"); but that is windows only.
xpi0t0s's Avatar, Join Date: Aug 2004
Mentor
The code is valid, the output should actually be "Computer8". 8 is returned by printf, which returns the number of characters it prints.
vivekgupta's Avatar, Join Date: Jun 2012
Light Poster
Why dont we use '&' in the case of strings in function scanf ??

e.g. :-


scanf("%s",date);

here date is a character array means string.
There is no & before date
This the part of a code.


Plz help
xpi0t0s's Avatar, Join Date: Aug 2004
Mentor
Because date is already a pointer.
annahussy's Avatar
Banned
Even I had the same question what vivek is asking to you? But, Now I got it that date is already a pointer then it should be use scanf("%s",date) like that. I am learning the C language, So this information will really be useful for me.
jraco11's Avatar
Banned
The ampersand symbol '&' otherwise known as the address operator takes in the address of a certain variable. the scanf function requires addresses so therefore the '&' is necessary for data types such as int, short, long, double, float, etc....the fact the date is already a pointer (variables that hold ONLY addresses), there is no need to use the '&' to retrieve the address since this is what they are already holding.