У меня странная проблема с конкатенацией или печатью строк. У меня есть символ *, который может быть установлен на одно из нескольких значений строкового литерала.
char *myStrLiteral = NULL;
...
if(blah)
myStrLiteral = "foo";
else if(blahblah)
myStrLiteral = "bar";
И у меня есть некоторые другие строки, которые я получаю из библиотечных функций или которые являются конкатенациями ввода - они либо malloc'ed, либо переменные стека. Когда я пытаюсь напечатать (или объединить, используя strcpy () и strcat (), результат тот же), даже если я печатаю строковый литерал последним, он печатает над начальные символы всей строки I Строю или печатаю.
/* otherString1 contains "hello", otherString2 contains "world" */
printf("%s %s %s\n", otherString1, otherString2, myStrLiteral);
/* prints "barlo world" */
Не понимаю ли я что-то о строковых литералах в C?