Segmentation fault в языке Си, с использованием char*
Хочу сказать что я новичок в Си, и мне нужно написать функцию, которая выведет элементы поля, без повторяющихся букв(элементов), но я не совсем понимаю, почему у меня возникла ошибка Segmentation Fault. Буду очень благодарен за помощь.
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <stdbool.h>
char* d(char*);
int main(void) {
char* str = "Google";
d(str);
return 0;
}
char* d(char* str) {
int x = 0;
int len = strlen(str);
while (x != len) {
if (str[x] == str[x+1]) {
str[x] = 0;
str[x+1] = 0;
}
x++;
}
str = '\0';
return str;
}
Ответы (1 шт):
Автор решения: mik.ov
→ Ссылка
Все дело в том, что вы пытаетесь изменить область памяти, которая не предназначена для записи.
char *str = "Google"; /* ~= char const *const str = "Google"; */
Если вы хотите изменить массив символов, то так и запишите его в стек как массив символов:
char str[] = "Google";
Исправьте ваш код на такой:
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <stdbool.h>
char* d(char*);
int main(void) {
char str[] = "Google";
d(str);
return 0;
}
char* d(char* str) {
int x = 0;
int len = strlen(str);
while (x != len) {
if (str[x] == str[x+1]) {
str[x] = 0;
str[x+1] = 0;
}
x++;
}
str = '\0';
return str;
}