| | |
total newb - "passing arg 2 of `strcpy' makes pointer from integer without a cast"
Please support our C++ advertiser: Intel Parallel Studio Home
![]() |
total newb - "passing arg 2 of `strcpy' makes pointer from integer without a cast"
0
#1 Apr 22nd, 2005
When trying to compile a C program including the code below, I keep getting this error and I don't know what to do to fix it. Please explain if you can!
Complete code may be downloaded from my website at www.atrixnet.com/cquestion.zip (It's only 2 Kb)
I suppose I'll attach it to this post too, since that appears to be an available feature on this board
COMPILATION ATTEMPT:
tommy@city-it ~/cdevel
$ gcc -Wall -ansi -pedantic -mno-cygwin -I . -o myfirstlib myfirstlib.c
ERROR:
myfirstlib.c: In function `main':
myfirstlib.c:14: warning: passing arg 2 of `strcpy' makes pointer from integer without a cast
myfirstlib.c:20: warning: passing arg 2 of `strcpy' makes pointer from integer without a cast
CODE SUMMARY (main program):
CODE SUMMARY (from myfuncs.h):
MY COMPILER:
tommy@city-it ~/cdevel
$ gcc -v
Reading specs from /usr/lib/gcc-lib/i686-pc-cygwin/3.3.3/specs
Configured with: /gcc/gcc-3.3.3-3/configure --verbose --prefix=/usr --exec-prefi
x=/usr --sysconfdir=/etc --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --enable-languages=c,ada,c++,d,f77,java,objc,
pascal --enable-nls --without-included-gettext --enable-libgcj --with-system-zlib --enable-interpreter --enable-threads=posix --enable-java-gc=boehm --enable-sjlj-exceptions --disable-version-specific-runtime-libs --disable-win32-registry
Thread model: posix
gcc version 3.3.3 (cygwin special)
Complete code may be downloaded from my website at www.atrixnet.com/cquestion.zip (It's only 2 Kb)
I suppose I'll attach it to this post too, since that appears to be an available feature on this board

COMPILATION ATTEMPT:
tommy@city-it ~/cdevel
$ gcc -Wall -ansi -pedantic -mno-cygwin -I . -o myfirstlib myfirstlib.c
ERROR:
myfirstlib.c: In function `main':
myfirstlib.c:14: warning: passing arg 2 of `strcpy' makes pointer from integer without a cast
myfirstlib.c:20: warning: passing arg 2 of `strcpy' makes pointer from integer without a cast
CODE SUMMARY (main program):
C++ Syntax (Toggle Plain Text)
#include <stdio.h> #include <string.h> #include <myfuncs.h> int anumber; char astring[255]; int main () { printf ("This is the first time I've tried to '#include' my library!\n\n"); anumber = getnum("Enter some kind of integer: "); strcpy(astring, getstring("Enter your name: ")); printf("\nThank you, %s. You entered %d\n", astring, anumber); while (getyn("\nDo you want to go again? [Y/n]")) { anumber = getnum("Enter some kind of integer: "); strcpy(astring, getstring("Enter your name: ")); printf("\nThank you, %s. You entered %d\n", astring, anumber); } printf("\nBye.\n"); return (0); }
CODE SUMMARY (from myfuncs.h):
C++ Syntax (Toggle Plain Text)
/* will act as the buffer into which user's response will be stored */ char lineofinput[255]; /* grabs a string from the command prompt */ char getstring (char strquestion[255]) { /* reset */ char lineofinput[255]; if (strlen (strquestion)) printf ("%s", strquestion); fgets (lineofinput, sizeof (lineofinput), stdin); /* while we get an empty response */ while (strlen (lineofinput) == 1) { if (strlen (strquestion) == 1) printf ("Empty answers not permitted. Please try again: "); return (getstring (lineofinput)); } return (sprintf("%s", lineofinput)); }
MY COMPILER:
tommy@city-it ~/cdevel
$ gcc -v
Reading specs from /usr/lib/gcc-lib/i686-pc-cygwin/3.3.3/specs
Configured with: /gcc/gcc-3.3.3-3/configure --verbose --prefix=/usr --exec-prefi
x=/usr --sysconfdir=/etc --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --enable-languages=c,ada,c++,d,f77,java,objc,
pascal --enable-nls --without-included-gettext --enable-libgcj --with-system-zlib --enable-interpreter --enable-threads=posix --enable-java-gc=boehm --enable-sjlj-exceptions --disable-version-specific-runtime-libs --disable-win32-registry
Thread model: posix
gcc version 3.3.3 (cygwin special)
Re: total newb - "passing arg 2 of `strcpy' makes pointer from integer without a cast
0
#2 Apr 22nd, 2005
Well, your getstring returns a single char and not a char*.
But what you attempt to return is more worrisome.
You may want to take a peek at this.
/* grabs a string from the command prompt */ char getstring (char strquestion[255]) { /* reset */ char lineofinput[255]; if (strlen (strquestion)) printf ("%s", strquestion); fgets (lineofinput, sizeof (lineofinput), stdin); /* while we get an empty response */ while (strlen (lineofinput) == 1) { if (strlen (strquestion) == 1) printf ("Empty answers not permitted. Please try again: "); return (getstring (lineofinput)); } return (sprintf("%s", lineofinput)); }
You may want to take a peek at this.
"One of the methods used by statists to destroy capitalism consists in establishing controls that tie a given industry hand and foot, making it unable to solve its problems, then declaring that freedom has failed and stronger controls are necessary." --Ayn Rand
Re: total newb - "passing arg 2 of `strcpy' makes pointer from integer without a cast
0
#3 Apr 23rd, 2005
•
•
•
•
Originally Posted by Dave Sinkula
Well, your getstring returns a single char and not a char*.
•
•
•
•
But what you attempt to return is more worrisome.
Unfortunately that isn't providing me with any answers to the question I've asked. Remember I'm a total newbie? Please help me out here by guiding me with a little easier terms to understand.
Thanks for responding to me!
Re: total newb - "passing arg 2 of `strcpy' makes pointer from integer without a cast"
0
#4 Apr 23rd, 2005
>Yes but how do I change that?
I would think it would be obvious:
>I'm sorry? What do you mean?
sprintf returns the number of characters printed, not a string of any sort, which is what your use of getstring suggests. You could return lineofinput, and that would satisfy the type system, but then you would have problems because lineofinput is a local variable and is destroyed when the function returns. A much better solution would be to pass a pointer to the buffer to getstring. Then you can return a pointer to the buffer with no problem:
>Unfortunately that isn't providing me with any answers to the question I've asked.
Perhaps not the question you asked now. If we give you a link (Dave or I in particular), we think you need the information whether you asked for it or not.
>Please help me out here by guiding me with a little easier terms to understand.
You read book. Use reference. It help make code good.
I would think it would be obvious:
char *
getstring (char strquestion[255])sprintf returns the number of characters printed, not a string of any sort, which is what your use of getstring suggests. You could return lineofinput, and that would satisfy the type system, but then you would have problems because lineofinput is a local variable and is destroyed when the function returns. A much better solution would be to pass a pointer to the buffer to getstring. Then you can return a pointer to the buffer with no problem:
C++ Syntax (Toggle Plain Text)
#include <stdio.h> char *getstring ( char buffer[], int size ) { if ( fgets ( buffer, size, stdin ) == NULL ) return NULL; return buffer; } int main ( void ) { char buffer[BUFSIZ]; if ( getstring ( buffer, sizeof buffer ) != NULL ) printf ( "%s\n", buffer ); return 0; }
Perhaps not the question you asked now. If we give you a link (Dave or I in particular), we think you need the information whether you asked for it or not.
>Please help me out here by guiding me with a little easier terms to understand.
You read book. Use reference. It help make code good.
I'm here to prove you wrong.
Re: total newb - "passing arg 2 of `strcpy' makes pointer from integer without a cast
0
#5 Apr 23rd, 2005
>>Yes but how do I change that?
>I would think it would be obvious:
Seriously? I just started messing with C a few days ago. I've only ever programmed in Perl and Python. The example you provided works but I still have no idea why... I'll continue to research it, but I thought the point of this board was to get help with things, not get cryptic responses that provide more questions than I started with.
So far I'm very disappointed with the quality of help I've received. It's showing me how weak the community is around C and C++ whereas the community around python and perl leaves you guys looking like... well... words that shouldn't be uttered in public foura.
And please don't tell me, "well if you love perl so much why don't you just go away"... That is so below what I hoped you'd prove to be -helpful, friendy.
Like I said -works great but means nothing to me.
>sprintf returns the number of characters printed, not a string of any sort, which is what your use of getstring suggests. You could return lineofinput, and that would satisfy the type system, but then you would have problems because lineofinput is a local variable and is destroyed when the function returns. A much better solution would be to pass a pointer to the buffer to getstring. Then you can return a pointer to the buffer with no problem:
Thanks this is good information, but still doesn't /explain/ anything, like what the "*" does and where you get "BUFSIZ". 
>>Unfortunately that isn't providing me with any answers to the question I've asked.
>Perhaps not the question you asked now. If we give you a link (Dave or I in particular), we think you need the information whether you asked for it or not.
OK.
>>Please help me out here by guiding me with a little easier terms to understand.
>You read book. Use reference. It help make code good.
I really can't believe you just said that. I'm already working out of a book. Dare I ask if you know of any other places I could receive better help with C than this?
>I would think it would be obvious:
Seriously? I just started messing with C a few days ago. I've only ever programmed in Perl and Python. The example you provided works but I still have no idea why... I'll continue to research it, but I thought the point of this board was to get help with things, not get cryptic responses that provide more questions than I started with.
So far I'm very disappointed with the quality of help I've received. It's showing me how weak the community is around C and C++ whereas the community around python and perl leaves you guys looking like... well... words that shouldn't be uttered in public foura.
And please don't tell me, "well if you love perl so much why don't you just go away"... That is so below what I hoped you'd prove to be -helpful, friendy.
char *
getstring (char strquestion[255])>sprintf returns the number of characters printed, not a string of any sort, which is what your use of getstring suggests. You could return lineofinput, and that would satisfy the type system, but then you would have problems because lineofinput is a local variable and is destroyed when the function returns. A much better solution would be to pass a pointer to the buffer to getstring. Then you can return a pointer to the buffer with no problem:
C++ Syntax (Toggle Plain Text)
#include <stdio.h> char *getstring ( char buffer[], int size ) { if ( fgets ( buffer, size, stdin ) == NULL ) return NULL; return buffer; } int main ( void ) { char buffer[BUFSIZ]; if ( getstring ( buffer, sizeof buffer ) != NULL ) printf ( "%s\n", buffer ); return 0; }

>>Unfortunately that isn't providing me with any answers to the question I've asked.
>Perhaps not the question you asked now. If we give you a link (Dave or I in particular), we think you need the information whether you asked for it or not.
OK.
>>Please help me out here by guiding me with a little easier terms to understand.
>You read book. Use reference. It help make code good.
I really can't believe you just said that. I'm already working out of a book. Dare I ask if you know of any other places I could receive better help with C than this?
Re: total newb - "passing arg 2 of `strcpy' makes pointer from integer without a cast
0
#6 Apr 23rd, 2005
•
•
Join Date: Nov 2004
Posts: 108
Reputation:
Solved Threads: 3
Re: total newb - "passing arg 2 of `strcpy' makes pointer from integer without a cast
0
#7 Apr 23rd, 2005
"*" are pointers they point to a memory address.
Dave and Narue are not trying to be mean and cryptic. They are just trying to get you to work things out on your own. Most of us fell that it is a disservice to tell you everything and you not find it out on your own.
Dave and Narue are not trying to be mean and cryptic. They are just trying to get you to work things out on your own. Most of us fell that it is a disservice to tell you everything and you not find it out on your own.
Join me on IRC:
Server: irc.daniweb.com
Channel: #C++
Chat Via:
http://daniweb.com/chat/minichat.php
or
Your favorite IRC client.
Server: irc.daniweb.com
Channel: #C++
Chat Via:
http://daniweb.com/chat/minichat.php
or
Your favorite IRC client.
Re: total newb - "passing arg 2 of `strcpy' makes pointer from integer without a cast
0
#8 Apr 23rd, 2005
•
•
Join Date: Nov 2004
Posts: 108
Reputation:
Solved Threads: 3
Re: total newb - "passing arg 2 of `strcpy' makes pointer from integer without a cast"
0
#9 Apr 23rd, 2005
Of course there is. Like dave and prelude saud you have to use the char* type.
e.g
Now I think I did the printf right I am a C++ man
e.g
C++ Syntax (Toggle Plain Text)
#include <stdio.h> #include <string.h> char *getSomeString(void); int main(void) { char mainString[strlen(getSomeString()) + 1]; strcpy(mainString,getSomeString()); printf("%s",mainString); getchar(); } char *getSomeString(void) { return "Some String"; }
Join me on IRC:
Server: irc.daniweb.com
Channel: #C++
Chat Via:
http://daniweb.com/chat/minichat.php
or
Your favorite IRC client.
Server: irc.daniweb.com
Channel: #C++
Chat Via:
http://daniweb.com/chat/minichat.php
or
Your favorite IRC client.
Re: total newb - "passing arg 2 of `strcpy' makes pointer from integer without a cast
0
#10 Apr 23rd, 2005
•
•
•
•
Originally Posted by prog-bman
Of course there is. Like dave and prelude saud you have to use the char* type.
e.g
Now I think I did the printf right I am a C++ manC++ Syntax (Toggle Plain Text)
#include <stdio.h> #include <string.h> char *getSomeString(void); int main(void) { char mainString[strlen(getSomeString()) + 1]; strcpy(mainString,getSomeString()); printf("%s",mainString); getchar(); } char *getSomeString(void) { return "Some String"; }
And is it bad to say...
C++ Syntax (Toggle Plain Text)
char mainString[] = getSomeString();
My Oreilly book says...
•
•
•
•
C has a special shorthand for initializing strings: Surround the string with double quotes to simplify initialization...
The dimension of name is 4 because C allocates a place for the '\0' character that ends the string.C++ Syntax (Toggle Plain Text)
char name[] = "Sam";
![]() |
Other Threads in the C++ Forum
- Previous Thread: How can I write this coding?
- Next Thread: Sockets Help
| Thread Tools | Search this Thread |
api array based binary bitmap c++ c/c++ calculator char char* class classes code coding compile console conversion count database delete deploy desktop developer directshow dll download dynamic dynamiccharacterarray email encryption error file forms fstream function functions game givemetehcodez google graph gui homeworkhelp iamthwee ifstream input int java lib linkedlist linker linux list loop looping loops map math matrix memory multiple news node number numbertoword output pointer problem program programming project python random read recursion recursive reference return rpg sorting string strings temperature template templates test text text-file tree unix url variable vector video visualstudio win32 windows winsock word wordfrequency wxwidgets






