Вопросы с тегом «c-strings»

17
Почему я получаю ошибку сегментации при записи в «char * s», инициализированный строковым литералом, но не «char s []»?
Следующий код получает ошибку сегмента в строке 2: char *str = "string"; str[0] = 'z'; // could be also written as *str = 'z' printf("%s\n", str); Пока это работает на отлично char str[] = "string"; str[0] = 'z'; printf("%s\n", str); Протестировано с MSVC и GCC.

9
'\ 0' и printf () в C
Во вводном курсе C я узнал, что при хранении строки хранятся с нулевым символом \0в конце. Но что, если я хочу напечатать строку, скажем, printf("hello")хотя я обнаружил, что это не заканчивается \0следующим утверждением printf("%d", printf("hello")); Output: 5 но это кажется противоречивым, насколько я знаю, что переменные, такие как строки, хранятся …
21 c  printf  stdout  c-strings 


4
Как массивы символов должны использоваться в качестве строк?
Я понимаю, что строки в C - это просто символьные массивы. Поэтому я попробовал следующий код, но он дает странные результаты, такие как вывод мусора или сбой программы: #include <stdio.h> int main (void) { char str [5] = "hello"; puts(str); } Почему это не работает? Он компилируется чисто с gcc …

1
Сравнение std :: string и строковых литералов в стиле C
Предположим, у меня есть следующий код: #include <iostream> #include <string> #include <iomanip> using namespace std; // or std:: int main() { string s1{ "Apple" }; cout << boolalpha; cout << (s1 == "Apple") << endl; //true } Мой вопрос: как система проверяет эти два? s1является объектом, а "Apple"является строковым литералом …
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.