Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 15.09.2011
Сообщений: 14
1

Ошибка сегментации при записи строки

11.11.2011, 18:51. Показов 1010. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток уважаемые форумчане!Помогоите исправить ошибку.
Начну с условия задания, которое я пытаюсь исполнить:

270. Даны символы S1,S2… .Известно, что символ S1 отличен от пробела и что среди S2,S3 ,…. имеется хотя бы один пробел. Рассматриваются S1, ...,Sn —символы, предшествующие первому пробелу (n заранее неизвестно). Преобразовать последовательность S1, ...,Sn удалив из каждой группы цифр, которой не предшествует точка, все начальные нули (кроме последнего, ели за ним идет точка).

Мой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>
#include <string.h>
int main(){
    int i,l,k=0;
    char a[80];
    char b[80];
   
    gets(a);
    
    for(i=0;a[i]!=' ';i++)
   {for(i=0;a[i]!='.';i++)
   if(a[i]!=0){
      b[k]=a[i];  // ОШИБКА УКАЗЫВАЕТ СЮДА
   k++;
   }}
    puts(b);
    getch();
    return 0;}

В чем собственно трабл - при отладке получаю ошибку сегментации указывающую на b[k]=a[i];. Естественно программа не работает.... (компилятор Dev c++ 4.9..)
Что в этом коде можно подправить, или вобще как реализовать задание?
Заранее огромнейшее спасибо всем откликнувшимся!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.11.2011, 18:51
Ответы с готовыми решениями:

Ошибка сегментации при работе со строками
Задача: Дан файл содержащий строки вещественных чисел. Вычислить минимум и максимум в каждой...

Ошибка сегментации при срабатывании деструктора
Всем привет. Помогите, пожалуйста, разобраться с деструкторами. Суть проблемы заключается вот в...

При отладке выдается ошибка сегментации
Всем привет! :) У меня такая проблема: программа по численным методам (кусок кода -...

Ошибка сегментации при обращении к данным контейнера
Вот такой вопрос почему ошибка сигментации возникла не пойму. Задание: Биолог изучает размножение...

7
Эксперт С++
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
11.11.2011, 23:15 2
Какую строку вводишь в программу ?
Пройди в отладчике программу и все станет ясно
0
0 / 0 / 0
Регистрация: 15.09.2011
Сообщений: 14
11.11.2011, 23:22  [ТС] 3
Ввожу любую строку... результ один и тот.... Откладка указывает ошибку сегментации, но как ее исправить...
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
12.11.2011, 09:10 4
циклы нужно делать с учётом нуль-символа в конце
1
0 / 0 / 0
Регистрация: 15.09.2011
Сообщений: 14
12.11.2011, 14:00  [ТС] 5
Туплю...Всмысле, с учетом нуль символа..... приписать в конец каждой строки \0 ?

Добавлено через 1 час 9 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>
#include <string.h>
int main(){
    int i,l,k=0;
    char a[BUFSIZ] = {'\0'};
    char b[BUFSIZ] = {'\0'};
    char *p=b;
   
    gets(a);
    a[0]='1';
    for(i=0;a[i]!=' ';i++){
  
    if(a[i]!='0'){
       *p++=a[i];
           }}
       
    puts(b);
    getch();
    return 0;}
Вот блин!! Ошибку сегментации решил... Поперло по 8 или 13 раз выводить один и тот символ))
Поколупал еще - нули не убирает!
Зае...Задолбался...
Смотрю - а у меня в if ноль не в одинарных кавычках был...!

Теперь нужно добавить обработку до точки....
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
12.11.2011, 15:03 6
C++
1
    for (i = 0; a[i] != ' ' && a[i] != '\0'; i++) {
1
0 / 0 / 0
Регистрация: 15.09.2011
Сообщений: 14
12.11.2011, 19:37  [ТС] 7
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
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>
#include <string.h>
int main()
{
    int i,l,k=0,j=0,e;
    char a[BUFSIZ] = {'\0'};
    char b[BUFSIZ] = {'\0'};
    char *p=b;
   
    gets(a);
    a[0]!=' ';
    
    for (i=0;a[i]!=' '&&a[i]!='\0';i++) 
{ for(e=0;a[e]!='.';e++)
    j=e;
   
    if(a[i]!='0'&&i<j-1)
    *p++=a[i];
 
    if(i>=j)
    *p++=a[i];
                      }          
        
    puts(b);
    getch();
    return 0;}
Готовая программа.... мож кому пригодится...
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
13.11.2011, 02:17 8
внутренний цикл тоже
0
13.11.2011, 02:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.11.2011, 02:17
Помогаю со студенческими работами здесь

Ошибка сегментации при освобождении памяти
Вот в упор не понимаю, почему программа вылетает уже на завершающем этапе. Пожалуйста, посмотрите,...

Ошибка при чтении записи строки и вылет в другой код
Все работало хорошо, но вдруг что-то пошло не так и при чтении из файла в массив чаров вылетает в...

Ошибка при посимвольной записи из строки char в строку string
Это фрагмент конструктора класса: ifstream fin(&quot;client.txt&quot;); const int n = 80;...

Ошибка Сегментации
Всем привет! При выполнении кода вылетает ошибка: &quot;Ваша программа вызвала нарушение доступа(ошибку...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru