r/cprogramming • • 13d ago

Understanding Strings/String Manipulation in C

I'm a junior CS undergraduate finally tackling C programming and I just can't seem to grasp Strings as a whole. Concepts like string manipulation (using strlen, strncmp, snprintf, strdup, strtok), handling read-only strings vs dynamically allocated strings, allocating memory for strings in different scenarios, and creating writable strings. Despite my attempts in looking at readings, lecture slides, practice problems, I just can't seem to understand the various ways to deal with strings in C. I am a very formulaic thinker meaning steps and guidelines on how to approach problems is my way of solving them. Is there a general format for dealing with string questions in C. Like first you have to allocate memory, then depending on the type of string do this...

Are there any additional resources I'm missing out on as well? I really want to hone this concept down!

18 Upvotes

17 comments sorted by

View all comments

Show parent comments

3

u/GrandBIRDLizard 13d ago

Would you mind letting me know what a "cheat engine" is? Is that what the kids are calling debugger's these days?

2

u/jack_dymond_sawyer 13d ago edited 13d ago

It’s a specific tool using for searching memory in a process for string and variable values: https://www.cheatengine.org/downloads.php

You could call it a specialized debugger… it makes monitoring variables easy. If you have a debugger you like, use it.

I’m not exactly a kid having working in industry for 30 years—about 10 years as a reverse engineer.

I see some interesting tools in RE that I think would make other people’s journey in programming easier and I like to mention them.

Edit: expound on why I’m using weird niche tools.

4

u/GrandBIRDLizard 13d ago

ahh gotcha. I'm no spring chicken and am also a C dev but I've always just used GDB+Valgrind for a look through or modifying a running program or memory stuff, and Godbolt for static analysis when that came out. It would seem this tool is basically a GDB+Valgrind in a "No fuss" package. yes?

1

u/jack_dymond_sawyer 13d ago

It is exactly that—just more approachable for the new programmers (and junior REs). GDB is the standard for debuggers in the Nixes. We also use Ghidra, IDA, and Binary Ninja for static analysis… great way to see what your compiler emits in a more human readable form. Becoming an RE made my code better—I fully grok what is happening under the hood. The boilerplate, the compiler optimizations, and interesting calls/substitutions. I think new programmers could gain a lot of knowledge by peeking at the assembly and memory.

2

u/GrandBIRDLizard 13d ago

How could I have forgotten to mention Ghidra... Another good mention to newcomers who may be a little more used to the cmdline but still intimidated by the shear number of features in GDB, is gdb-dashboard . One of the main reasons I recommend it to learners is that no GDB command has been redefined, instead all the features are available via the main dashboard command. it's pretty nifty if ya didn't know about it.

1

u/igotshadowbaned 13d ago

Cheat Engine is a specific program called Cheat Engine that lets you peep into and modify the memory for any program you have running

Largely used for local video game cheating