asked 148k views
4 votes
I have a real struggle when it comes to working with strings, whether they're arrays or pointers to strings, and I'm lost cause when I read or watch tutos I understand them, but then I'm like a novice when I need to write actual code, what should I do?

PS: I'm using C language.

1 Answer

0 votes
In C, you deal with a string always via a pointer. The pointer by itself will not allocate memory for you, so you'll have to take care of that.

When you write char* s = "Hello world"; s will point to a "Hello world" buffer compiled into your code, called a string literal.

If you want to make a copy of that string, you'll have to provide a buffer, either through a char array or a malloc'ed bit of memory:

char myCopy[100];
strcpy(myCopy, s);

or

char *myCopy;
myCopy = (char*)malloc( strlen(s) + 1 );
strcpy(myCopy, s);

The malloc'ed memory will have to be returned to the runtime at some point, otherwise you have a memory leak. The char array will live on the stack, and will be automatically discarded.

Not sure what else to write here to help you...
answered
User Abstraction
by
8.3k points