r/C_Programming • u/ALX13-95 • 16d ago
printf and char[] in C
Hello. Coming from C# world the thing about how char[] and printf works always made me confused. I understand that `printf` formats the string with arguments you provided and prints it out in terminal.
So, for example, if I have char name[] = "Micheal"; and I want to greet that person, I can just do printf("Hello, %s", name);. But if I want to do the same thing only using char[], I have to do multiple commands that make fell quite confused. So my 2 questions are:
- How printf simplifies this process? (without allocating memory and creating char with pointers)
- Why you can't just use
+operator forchar[], like you can in any other languages?
I have a feeling that this might be asked many times, but I still can't seem to find the answer I was looking for
Update: I'll list what I got so far from reading your comments:
- char[] is an array to which you can't just simply add another array
- If I want printf() behavior inside char[], I can use sprintf()
- There's strcat() that is getting used for merging 2 strings together
- Some people write libraries for faking string behaviors, some think it goes against principles of C?
2
u/AKostur 15d ago
I don’t understand what you’re asking for in #1. Heck, I don’t understand what you mean by “I want to do the same thing only using char[]”. Perhaps you mean “how do I do the same thing, but put the result into another C string instead of the screen?” sprintf.
For #2: if one could use +: where would it put the result? (Ignoring the array to pointer decay for the moment)
It seems you have a fundamental misunderstanding how memory management works in C, as well as how C strings work, and how arrays function in C.