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

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

Войти
Регистрация
Восстановить пароль
 
VanDro
0 / 0 / 0
Регистрация: 15.09.2011
Сообщений: 14
#1

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

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

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

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..)
Что в этом коде можно подправить, или вобще как реализовать задание?
Заранее огромнейшее спасибо всем откликнувшимся!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2011, 18:51     Ошибка сегментации при записи строки
Посмотрите здесь:

Ошибка сегментации C++
C++ ошибка сегментации
При отладке выдается ошибка сегментации C++
Ошибка Сегментации C++
C++ Ошибка сегментации.
Ошибка сегментации C++
C++ ошибка сегментации
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
odip
Эксперт С++
7153 / 3293 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
11.11.2011, 23:15     Ошибка сегментации при записи строки #2
Какую строку вводишь в программу ?
Пройди в отладчике программу и все станет ясно
VanDro
0 / 0 / 0
Регистрация: 15.09.2011
Сообщений: 14
11.11.2011, 23:22  [ТС]     Ошибка сегментации при записи строки #3
Ввожу любую строку... результ один и тот.... Откладка указывает ошибку сегментации, но как ее исправить...
accept
4817 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
12.11.2011, 09:10     Ошибка сегментации при записи строки #4
циклы нужно делать с учётом нуль-символа в конце
VanDro
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 ноль не в одинарных кавычках был...!

Теперь нужно добавить обработку до точки....
accept
4817 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
12.11.2011, 15:03     Ошибка сегментации при записи строки #6
C++
1
    for (i = 0; a[i] != ' ' && a[i] != '\0'; i++) {
VanDro
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;}
Готовая программа.... мож кому пригодится...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.11.2011, 02:17     Ошибка сегментации при записи строки
Еще ссылки по теме:

C++ Ошибка сегментации
C++ Ошибка сегментации при срабатывании деструктора
Ошибка при посимвольной записи из строки char в строку string C++
Ошибка сегментации C++
Ошибка сегментации при обращении к данным контейнера C++

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

Или воспользуйтесь поиском по форуму:
accept
4817 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
13.11.2011, 02:17     Ошибка сегментации при записи строки #8
внутренний цикл тоже
Yandex
Объявления
13.11.2011, 02:17     Ошибка сегментации при записи строки
Ответ Создать тему
Опции темы

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