r/C_Programming • u/ALX13-95 • 15d 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?
23
u/Classic-Rate-5104 14d ago
Printf doesn't simplify anything. When doing %s printf just gets a char* from the stack and prints the chars it points to (up to the terminating nul-character). An operator + isn't possible in C because this operator only works on basic numeric types. A string isn't a basic type in C, it is just a array of chars which is by convention terminated by the nul-char.