Правильный стиль при работе со строками - 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, что означает успешное выполнение программы