Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
OLLEGATOR
Linux-оид
116 / 65 / 3
Регистрация: 15.02.2011
Сообщений: 353
#1

Ошибка strcat ...segmentation fault - C++

30.08.2011, 00:59. Просмотров 957. Ответов 3
Метки нет (Все метки)

имеется функция показывает что segmentation fault(только в режиме дебага) в красных строках...а при компиляции ошибки не показывает...странно..подскажи ошибка в строке 32 и 43

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
void Fix_Grub(char *weight_and_hight){ // Правим Grub...
 
    FILE *f=fopen("/etc/default/grub","r");
    if(!f) printf("Ошибка: fix grub 1");
 
    fseek(f,0,SEEK_END); // Чтобы узнать кол-во символов...указатель в конец...
 
    int kolvo=ftell(f);
 
    char *temp=malloc(kolvo*sizeof(char)); // Для первого считывания...
 
    fseek(f,0,SEEK_SET); // Возвращаем указатель в начало...
 
    fread(temp,sizeof(char),kolvo,f); // Считали содержимое grub...
 
    char *target="GRUB_CMDLINE_LINUX_DEFAULT=\"quiet splash\""; // Что ищем на замену...
    char *target_2="#GRUB_GFXMODE=640x480"; // Правим дальше граб...
    char *one="GRUB_CMDLINE_LINUX_DEFAULT=\"quiet splash nomodeset video=uvesafb:mode_option="; // Сначала ставим это
    char *two=",mtrr=3,scroll=ywrap\""; // потом weight_and_hight, а потом two...
    char *three="GRUB_GFXMODE="; // Последняя вставка...
 
    char *ready_1=malloc((strlen(temp)-strlen(target)+strlen(one)+strlen(weight_and_hight)+strlen(two)+1)*sizeof(char)); // Для первой поправки...
    char *t; // Указатель поиска...
 
    strcpy(ready_1,""); // Чистка...
    t=strstr(temp,target); // Сдвигаем указатель до нужного момента...
 
    strncat(ready_1,temp,t-temp); //Скопировать всё что нам подходит...
    strcat(ready_1,one);                //  Подгонка под
    strcat(ready_1,weight_and_hight);   //   наше
    strcat(ready_1,two);                //  разрешение...
    strcat(ready_1,t+strlen(target));// Дописываем всё после нашей вставки...теперь Ready_1 содержит первое исправление..приступаем ко второму )) 
    strcat(ready_1,"\0"); // Завершение строки...
 
    char *release=malloc((strlen(ready_1)-strlen(target_2)+strlen(three)+strlen(weight_and_hight)+1)*sizeof(char)); // Результат...
 
    strcpy(release,""); // Чистка...
    t=strstr(ready_1,target_2); // Сдвигаем указатель до нужного момента...
 
    strncat(release,ready_1,t-ready_1); // Копируем предыдущую обработанную инфу...
    strcat(release,three);                  // Подгонка
    strcat(release,weight_and_hight);       // под
    strcat(release,t+strlen(target_2));     // наше разрешение... 
    strcat(release,"\0"); // Завершение строки...
    fclose(f); // Закрываем что-бы его переписать...
 
    FILE *f_2=fopen("/etc/default/grubqwerty","w");
    if(!f_2) printf("Ошибка grub! В создании результата...");
 
    fwrite(release,sizeof(char),strlen(release),f_2); // Перезаписываем grub...
    fclose(f_2);
 
    free(release);
    free(ready_1);
    free(temp);
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.08.2011, 00:59     Ошибка strcat ...segmentation fault
Посмотрите здесь:

Ошибка Segmentation fault - C++
Всем доброго дня. Люди добрые, помогите, кто чем может. При вызове метода hand.dealToPlayers(0) или hand.dealToPlayers(1) ошибок нет,...

Ошибка выполнения Segmentation fault при открытии файла - C++
Привет всем! почему не открывается файл, не понимаю что такое? ubuntu 16, qt creator 3.6.1 #include <string> #include <iostream> ...

Ошибка "Segmentation fault" при организации дерева - C++
Есть следующие функции Three сreateThree(Node **q) { if((*q)->p) { Three *one, *two; one =...

Segmentation fault - C++
Кусок кода: template <typename Type> class Queue { private: struct Elem { Elem*...

Segmentation fault - C++
Доброго времени суток. Есть 2 класса. object class object{ void (*f)(object*); public: void setFunc(void...

Malloc Segmentation fault - C++
Добрый день. И еще раз рискну побеспокоить коллективный разум своими глупыми вопросами. Есть у меня некоторая программа в тексте...

Segmentation fault (iterator) - C++
И снова здравствуйте! Кратко: функция некоторым образом парсит строку (не в этом проблема) и удаляет из нее НЕ алфавитно-цифровые...

Mpi segmentation fault - C++
Здравствуйте! Пробую пользоваться openMPI. Есть компьютер, на который без меня установлен openMPI, а я хочу разобраться как же писать...

string segmentation fault - C++
Доброго времени суток! Подскажите в чем может быть проблема? string str; int main(int argc, char const *argv) { ...

Segmentation Fault regex_match и regex_search - C++
Есть html страницы сайта, которые я паршу регулярками. Иногда происходит ошибка сегментации при определенном html коде. Как защититься...

Программа выводит segmentation fault! - C++
Текст задачи: Структура «Спортивная команда»: - название; - из какого города; - сколько игр сыграла; - сколько набрала...

Segmentation fault(core dumped) - C++
#include <iostream> int replace1(char *ptr, char c, char m); int main() { char *ptr = "cccccccc"; int i =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grizlik78
Эксперт С++
1904 / 1436 / 109
Регистрация: 29.05.2011
Сообщений: 2,990
30.08.2011, 01:12     Ошибка strcat ...segmentation fault #2
В строках 28 и 40 похоже на ошибку, ведь strncpy не добавляет завершающий строку символ '\0', если скопировано заданное количество байтов.
То есть после них надо бы добавить
C++
1
ready_1[t - temp] = '\0';
и
C++
1
release[t - ready_1] = '\0';
соответственно.
Ну и проверку результата поиска тоже бы стоило сделать.

Добавлено через 1 минуту
А строки 33 и 44 бесполезны, кстати. Они вообще ничего не делают.
OLLEGATOR
Linux-оид
116 / 65 / 3
Регистрация: 15.02.2011
Сообщений: 353
30.08.2011, 01:23  [ТС]     Ошибка strcat ...segmentation fault #3
добавил ваши строки программа на них начала ругаться....а strcat(release,t+strlen(target_2)); у меня раньше работали я просто наклацал что-то...не по теме наверное...
grizlik78
Эксперт С++
1904 / 1436 / 109
Регистрация: 29.05.2011
Сообщений: 2,990
30.08.2011, 11:36     Ошибка strcat ...segmentation fault #4
Ну так поиск подстроки точно успешно заканчивается?
Yandex
Объявления
30.08.2011, 11:36     Ошибка strcat ...segmentation fault
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru