C* && C[400]


 
Thread Tools Search this Thread
Top Forums Programming C* && C[400]
# 1  
Old 08-06-2011
C* && C[400]

I am normally a Java programmer, super noob in C. I got a noob question here

Code:
 
char input[400];
printf("Please enter the country name!");
scanf("%s", &input); //& character is essential for scanf() %f = float, %

There error it say
warning: format ‘%s’ expects type ‘char *’, but argument 2 has type ‘char (*)[400]’
I dont understand %s is for string rite?? char make up string then why it require char *?? char* is a pointer?
# 2  
Old 08-06-2011
When using in functions calls the name of an array is equivalent to the pointer to the first element of this array. You should use just "input" in scanf (and btw it's better to use "%399s" or fgets).
And yes, strings in C are pointers to char.
# 3  
Old 08-06-2011
Sry but i dont get what you mean. In scanf i did try what you say using "input" instead of "&input". What is the & for?? I put the & because i read a book saying that
& character is essential for scanf()
# 4  
Old 08-06-2011
& is for getting the address of a variable. But a pointer is already an address. So for example, you need it for an int variable, but if you have already a pointer to int, then you just name this pointer in function arguments without &.
Code:
int x;
int *ip = &x;
scanf("%d", ip)

With char buffers:
Code:
char input [400];
char *inputp = input; 
scanf("%s399", inputp);

# 5  
Old 08-06-2011
Ok i get what your trying to say but char input [400] is not a pointer why cant i
Code:
scanf("%s", &input);

and also what is
Code:
%s399

i understand that
Code:
 
%f

is float then
Code:
%s

should be string??
# 6  
Old 08-06-2011
In C, variables can be accessed in 2 ways: directly, or as pointers, where a pointer is, basically, the address where the memory reserved for that variable starts. Now here's the funny thing: there aren't really any strings in C, but arrays of characters, and most functions dealing with them require the last character to be the null character ('\0'). And even that's not really correct, because really there aren't arrays either. Declaring an array tells the compiler to reserve a certain amount of memory, and the variable really is the pointer to the first address in that block.

So you using &input doesn't mean "pass the pointer", but rather "pass the pointer to the pointer", which is 1 indirection too much.

And I think yazu meant %399s, which means "A string of characters, 399 at most" (because the 400th should be null).
This User Gave Thanks to pludi For This Post:
# 7  
Old 08-06-2011
Quote:
char input [400] is not a pointer
In function arguments It is a pointer.
Quote:
what is %s399
It is the maximum number of chars that you can get in the buffer (1 is needed for the last '\0'). So if you input more you can't overflow the buffer.
Quote:
%s should be string
There is no "string" type in C.

PS K&R is a wonderful book. One of the best programming books I've ever read.

---

Oh... Not again. Of course, I meant "%399s" instead of "%s399"... Smilie

Last edited by yazu; 08-07-2011 at 01:27 AM..
This User Gave Thanks to yazu For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

SFTP Shell Script Get & Delete && Upload & Delete

Hi All, Do you have any sample script, - auto get file from SFTP remote server and delete file in remove server after downloaded. - only download specify filename - auto upload file from local to SFTP remote server and delete local folder file after uploaded - only upload specify filename ... (3 Replies)
Discussion started by: weesiong
3 Replies

2. Shell Programming and Scripting

GNU & BSD Makefile Directives & Conditions Compatibility

Firstly, I would like to apologize if this is not the appropriate sub-forum to post about GNU/BSD makefile scripting. Though my code is in C++, because I am focusing on the makefile I thought it would go better in shell scripting. Please correct me if I am wrong. Secondly, I am not interested in... (0 Replies)
Discussion started by: AntumDeluge
0 Replies

3. Shell Programming and Scripting

Sort a the file & refine data column & row format

cat file1.txt field1 "user1": field2:"data-cde" field3:"data-pqr" field4:"data-mno" field1 "user1": field2:"data-dcb" field3:"data-mxz" field4:"data-zul" field1 "user2": field2:"data-cqz" field3:"data-xoq" field4:"data-pos" Now i need to have the date like below. i have just... (7 Replies)
Discussion started by: ckaramsetty
7 Replies

4. Shell Programming and Scripting

Replace & sign to &amp word

Hi, I have text file abc.txt. In this file, I have the following data. Input: Mr Smith &amp Mrs Smith Mr Smith &apos Mrs Smith Mr Smith & Mrs Smith Mr Smith& Mrs Smith Mr Smith &Mrs Smith Output: Mr Smith &amp Mrs Smith Mr Smith &apos Mrs Smith Mr Smith &amp Mrs Smith Mr Smith&amp... (4 Replies)
Discussion started by: naveed
4 Replies

5. Shell Programming and Scripting

replace & with & xml file

Hello All I have a xml file with many sets of records like this <mytag>mydata</mytag> <tag2>data&</tag2> also same file can be like this <mytag>mydata</mytag> <tag2>data&</tag2> <tag3>data2&amp;data3</tag3> Now i can grep & and replace with &amp; for whole file but it will replace all... (4 Replies)
Discussion started by: lokaish23
4 Replies

6. Shell Programming and Scripting

PHP read large string & split in multidimensional arrays & assign fieldnames & write into MYSQL

Hi, I hope the title does not scare people to look into this thread but it describes roughly what I'm trying to do. I need a solution in PHP. I'm a programming beginner, so it might be that the approach to solve this, might be easier to solve with an other approach of someone else, so if you... (0 Replies)
Discussion started by: lowmaster
0 Replies

7. Shell Programming and Scripting

Find & Replace string in multiple files & folders using perl

find . -type f -name "*.sql" -print|xargs perl -i -pe 's/pattern/replaced/g' this is simple logic to find and replace in multiple files & folders Hope this helps. Thanks Zaheer (0 Replies)
Discussion started by: Zaheer.mic
0 Replies

8. UNIX for Dummies Questions & Answers

Problem with xterm & tcsh & sourcing a script in a single command

Hi friends, I have a script that sets the env variable path based on different conditions. Now the new path variable setting should not done in the same terminal or same shell. Only a new terminal or new shell should have the new path env variable set. I am able to do this only as follows: >cd... (1 Reply)
Discussion started by: sowmya005
1 Replies

9. UNIX for Dummies Questions & Answers

Search for & edit rows & columns in data file and pipe

Dear unix gurus, I have a data file with header information about a subject and also 3 columns of n rows of data on various items he owns. The data file looks something like this: adam peter blah blah blah blah blah blah car 01 30 200 02 31 400 03 57 121 .. .. .. .. .. .. n y... (8 Replies)
Discussion started by: tintin72
8 Replies

10. Shell Programming and Scripting

creating & sending formatted (with bolds & colors) CSV

Hi , I have a situation. Need is to create & send a formatted file with header in BOLD & colored & some sequel results as a content. I know echo -e \033 command, but its scope is limited in PUTTY. How to retain the formatting out of Putty; say after someone opens a email attachment... (2 Replies)
Discussion started by: infaWorld
2 Replies
Login or Register to Ask a Question