When I declare a char * to a fixed string and reuse the pointer to point to another string
/* initial declaration */ char *src = "abcdefghijklmnop"; ..... /* I get the "warning: assignment makes integer from pointer without a cast" */ *src ="anotherstring"; I tried to recast the pointer but no success.
You can't directly assign values to a string like you are trying to do. Instead, you need to use functions like strncpy and friends from <string. h> and use char arrays instead of char pointers. If you merely want the pointer to point to a different static string, then drop the * .
It means exactly what it says: You are trying to assign an address ( pointer value ) to an integer variable. While this is tecnhically allowed, doing so without explicitly converting the pointer to an int is a sign this is probably not what you were intending , hence the warning. (
When you write the statement
*src = "anotherstring"; the compiler sees the constant string "abcdefghijklmnop" like an array. Imagine you had written the following code instead:
char otherstring[14] = "anotherstring"; ... *src = otherstring; Now, it's a bit clearer what is going on. The left-hand side, *src, refers to a char (since src is of type pointer-to-char) whereas the right-hand side, otherstring, refers to a pointer.
This isn't strictly forbidden because you may want to store the address that a pointer points to. However, an explicit cast is normally used in that case (which isn't too common of a case). The compiler is throwing up a red flag because your code is likely not doing what you think it is.
It appears to me that you are trying to assign a string. Strings in C aren't data types like they are in C++ and are instead implemented with char arrays. You can't directly assign values to a string like you are trying to do. Instead, you need to use functions like strncpy and friends from <string.h> and use char arrays instead of char pointers. If you merely want the pointer to point to a different static string, then drop the *.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With