2010-06-22 2 views

ответ

3

\ является маскирующим, так что если вы хотите напечатать \ вам нужно поставить два из них: \\

Объединяет две строки вы можете использовать strcat (string1 , строка 2), которая показана here.

+1

-1: C не имеет оператора конкатенации. Строковый класс C++ переопределяет оператор + для обеспечения аналогичной функциональности, но отнюдь не является оператором основного языка даже в C++. –

+0

oops. Просто изменил его. спасибо – Kyra

+0

+1 для отредактированного ответа. @Billy ONeal, вы можете рассмотреть возможность удаления вашего downvote после исправления. –

1

Как и другие, символ обратной косой черты() в C является символом escape. Посмотрите на http://msdn.microsoft.com/en-us/library/h21280bw%28VS.80%29.aspx, чтобы узнать больше об этом.

Так что ваши строки вышли следующим образом:

"\\.\" is "\\\\.\\" 
"\" is "\\" 

Есть много способов для конкатенации строк.

puts("Hello" " " "World"); 

напечатает "Hello World".

Общим способом является использование strcat().

char szBuff[60];     /* szBuff is an array of size 60 */ 
strcpy(szBuff, "Hello");   /* szBuff contains "Hello" */ 
strcat(szBuff, " World");   /* szBuff contains "Hello World" */ 
strcat(szBuff, " from Michael"); /* now contains the whole sentence */ 
strcpy(szBuff, "New message"); /* strcpy overwrites the old contents */ 
+0

Хорошо, но следует избегать объектов в '', если у вас нет другого выбора. –

+0

@Billy: Почему? В C++ есть лучшие способы, но в C обычно является предпочтительным способом манипулирования строками. Как вы рекомендуете это делать? –

+0

Если возможно, я бы рекомендовал написать их самостоятельно, используя способы, которые принимают ввод длины буфера, или используя что-то вроде библиотеки Safe C String M $ (strcpy_s, strcat_s и друзей). Почему в стандарте C используется метод, который позволяет такие легкие переполнения буфера, когда строки с префиксом длины были доступны, для меня не имеет смысла. –

Смежные вопросы