Правильный стиль при работе со строками - C (СИ)
Формулировка задачи:
Всем доброго дня.
Суть проблемы:
Таким образом, завершающий '\0' находится за пределами адресного пространства буфера str, в позиции str[7].
Вопос: нужно ли в буфере str резервировать дополнительную ячейку для '\0' (char str[А вот VS2012 во время пошагового выполнения ругается на stack corruption around 'str' (вроде так)
Спасибо заранее.
#include <stdio.h> #include <string.h> int main(void) { char str[6]; const char* he = "helios"; strcpy(str,he); int len = strlen(str); // len == 6 return 0; }
7
]), чтобы нуль находился внутри массива, а не за пределами его? Функции со <string.h> вроди бы работают нормально, но какой здесь стиль/подход наилучший? gcc v4.8.1-1 жует и не ругается.$ gcc -std=c99 -Wall -Wpedantic -Wextra
Решение задачи: «Правильный стиль при работе со строками»
textual
Листинг программы
#include <stdio.h> int main(void) { char s1[] = "abc", s2[] = "def"; strcpy(s2, "xxxxx"); printf("%s", s1); return 0; }
Объяснение кода листинга программы
- Включаем файл стандартного ввода/вывода
- Объявляем функцию main, которая ничего не возвращает и не принимает аргументов
- Объявляем две переменные типа char s1 и s2, которые содержат строки
abc
иdef
соответственно - Копируем строку
xxxxx
в переменную s2 с помощью функции strcpy - Выводим на экран содержимое переменной s1 с помощью функции printf и указываем, что нужно вывести строку, используя %s как форматный символ
- Завершаем выполнение функции main и возвращаем 0, что означает успешное выполнение программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д