Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Blekzet
3 / 3 / 7
Регистрация: 21.12.2015
Сообщений: 173
#1

Опять ошибка - C++

19.06.2016, 03:01. Просмотров 561. Ответов 36
Метки нет (Все метки)

Идет ошибка сегментации, а я в программировании не так силен, понять не могу в чем проблема...
(+ Выдает ошибки, когда количество символов в файле, превышает n значение (не могу определить его)... (У меня есть кое какое подозрение, но нужна помощь гуру(Ну и собственно, как такую проблему решить (пирастите!!))

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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <stdio.h>
#include <locale.h>
#include <stdlib.h>
#include <conio.h>
#include <ctype.h>
 
int cinchar(FILE *fl){
char a;
int cnt;
while (true){
    a = fgetc(fl);
    if (feof(fl)) {break;}
    if (isalnum(a) == true){cnt++;}
    else {cnt += 2;}
}
return cnt;
}
 
void association (FILE *f1, FILE *f2) {
 
int cc = cinchar(f1);
const int d = 60;
int cnt, i = 0;
char s[cc];
 
rewind(f1);
 
while (true){
    s[i] = fgetc(f1);
    if(feof(f1)) {break;}
    if (s[i] == '.'){
        s[i + 1] = ' ';
        i += 2;
        continue;}
    else if (s[i] == ' ') {
        s[i] = fgetc(f1);
        i--;}
    else if (s[i] == '\n'){s[i] = fgetc(f1);}
    i++;}
s[i] = '\0';
i = 0;
 
while (s[i] != '\0'){
    if (s[i] == '.'){
         s[i + 1] = '\n';
         cnt = 0;}
    else if (cnt == d){
         s[i] = '\n';
         cnt = 0;}
    fprintf (f2, "%c",s[i]);
    i++;
    cnt++;}
s[i] = '.';
fprintf (f2, "%c",s[i]);
}
 
int main(){
setlocale(LC_ALL, "RUS");
char fname1[20], fname2[20];
 
printf("Введите имя файла с расширением: ");
scanf("%s", fname1);
printf("Введите имя файла результата с расширением: ");
scanf("%s", fname2);
 
FILE *f1, *f2;
 
f1 = fopen(fname1, "r");
f2 = fopen(fname2, "w");
 
association(f1, f2);
 
fclose(f1);
fclose(f2);
 
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2016, 03:01
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Опять ошибка (C++):

Опять ошибка в коде =(
/* * code.cpp * * Created on: 06.11.2011 * Author: Sensei */ ...

опять ошибка.на этот раз cannot convert `float (*)(float)' to `float' in argument passing
#include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #include&lt;math.h&gt; float f1(float...

Опять конструкторы
допустим есть два класса. template &lt;typename T = int&gt; class SkillBase {...

Опять static
Есть два файла. ////////////////////////////////////// //main.cpp ...

опять о шрифтах
приветствую. Имеется программа из учебника: #include &lt;iostream&gt; #include...

Опять файлы
Если, я открыл файл записал туда данные, а потом пытаюсь читать эти данные до...

36
vlisp
443 / 412 / 103
Регистрация: 10.08.2015
Сообщений: 1,398
Завершенные тесты: 1
19.06.2016, 03:07 #2
Первое правило программирования: комментируй код. Без этого никто читать твои поделки не будет
0
Blekzet
3 / 3 / 7
Регистрация: 21.12.2015
Сообщений: 173
19.06.2016, 03:18  [ТС] #3
Тогда вот так:
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <stdio.h>
#include <locale.h>
#include <stdlib.h>
#include <conio.h>
#include <ctype.h>
 
int cinchar(FILE *fl){ //Считаем количество символов в файле
char a;
int cnt;
while (true){
    a = fgetc(fl);
    if (feof(fl)) {break;}
    if (isalnum(a) == true){cnt++;} //если символ это цифра или буква, увеличиваем счетчик
    else {cnt += 2;}                //иначе увеличиваем его на 2
}
return cnt;
}
 
void association (FILE *f1, FILE *f2) {
 
int cc = cinchar(f1); //заносим в переменную количество символов файла
const int d = 60;  
int cnt, i = 0;
char s[cc];
 
rewind(f1); //переводим внутренний указатель файла после предыдущей функции
 
while (true){  //заносим символы в строку
    s[i] = fgetc(f1);
    if(feof(f1)) {break;}
    if (s[i] == '.'){
        s[i + 1] = ' ';
        i += 2;
        continue;}
    else if (s[i] == ' ') {
        s[i] = fgetc(f1);
        i--;}
    else if (s[i] == '\n'){s[i] = fgetc(f1);}
    i++;}
s[i] = '\0';
i = 0;
 
while (s[i] != '\0'){   //печать в файл пока не встретим конец строки
    if (s[i] == '.'){   //если встречаем символ точки, переводим строку и сбрасываем счетчик
         s[i + 1] = '\n';  
         cnt = 0;}
    else if (cnt == d){  // если счетчик достиг 60, переводим строку
         s[i] = '\n';
         cnt = 0;}
    fprintf (f2, "%c",s[i]); //печать символа в файл 2
    i++;
    cnt++;}
s[i] = '.';
fprintf (f2, "%c",s[i]); //заканчиваем точкой
}
 
int main(){
setlocale(LC_ALL, "RUS");
char fname1[20], fname2[20];
 
printf("Введите имя файла с расширением: ");
scanf("%s", fname1);
printf("Введите имя файла результата с расширением: ");
scanf("%s", fname2);
 
FILE *f1, *f2;
 
f1 = fopen(fname1, "r");
f2 = fopen(fname2, "w");
 
association(f1, f2);
 
fclose(f1);
fclose(f2);
 
return 0;
}
0
rikimaru2013
C++ Game Dev
2471 / 1140 / 348
Регистрация: 30.11.2013
Сообщений: 3,709
19.06.2016, 03:47 #4
vlisp, нулевое правило программирования - если вашему коду нужны комментарии - вы гавнокодер
1
vlisp
443 / 412 / 103
Регистрация: 10.08.2015
Сообщений: 1,398
Завершенные тесты: 1
19.06.2016, 03:49 #5
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
если вашему коду нужны комментарии - вы гавнокодер
Комментарии есть хорошие, плохие и ужасные, не надо обобщать
1
rikimaru2013
C++ Game Dev
2471 / 1140 / 348
Регистрация: 30.11.2013
Сообщений: 3,709
19.06.2016, 03:53 #6
vlisp, вам виднее. Спорить с вами бессмысленно - ваши доводы железные.
1
Blekzet
3 / 3 / 7
Регистрация: 21.12.2015
Сообщений: 173
19.06.2016, 04:00  [ТС] #7
Я как бы и не отрицаю, что я говнокодер... Я программированием занимаюсь лишь месяц, а на си всего-то 5-8 дней...
0
avgoor
1007 / 601 / 156
Регистрация: 05.12.2015
Сообщений: 1,686
19.06.2016, 04:00 #8
rikimaru2013, Пусть есть более менее сложная регулярка:
^([a-z0-9_-]+\.)*[a-z0-9_-]+@[a-z0-9_-]+(\.[a-z0-9_-]+)*\.[a-z]{2,6}$
Что она означает, и как ее сделать самодокументируемой?
Регулярки только говнокодеры используют?
1
Blekzet
3 / 3 / 7
Регистрация: 21.12.2015
Сообщений: 173
19.06.2016, 04:02  [ТС] #9
люблю форумы, попросил помощи, начался срач СЛАВА ИНТЕРНЕТУ
1
rikimaru2013
C++ Game Dev
2471 / 1140 / 348
Регистрация: 30.11.2013
Сообщений: 3,709
19.06.2016, 04:11 #10
avgoor, название метода? документация? Если в 1% нужен комментарий - это больше исключение чем "он нужен"
1
avgoor
1007 / 601 / 156
Регистрация: 05.12.2015
Сообщений: 1,686
19.06.2016, 04:15 #11
rikimaru2013, Это первое, что в голову пришло. А так - посмотрите любой вусмерть заоптимизированный код. Там даже с комментариями без поллитры не разобраться. Я разработчик инженерного софта. Поверьте, я знаю, о чем говорю.
1
Blekzet
3 / 3 / 7
Регистрация: 21.12.2015
Сообщений: 173
19.06.2016, 04:19  [ТС] #12
По моему, тут потеряна нить темы.... чет в голос
0
avgoor
1007 / 601 / 156
Регистрация: 05.12.2015
Сообщений: 1,686
19.06.2016, 04:22 #13
Цитата Сообщение от Blekzet Посмотреть сообщение
тут потеряна нить темы
В ночь с субботы на воскресенье. В 4 утра. Не мудрено.
0
rikimaru2013
C++ Game Dev
2471 / 1140 / 348
Регистрация: 30.11.2013
Сообщений: 3,709
19.06.2016, 04:23 #14
avgoor, я и сам пишу комментарии, но мой пост был вызван к двум личностям, и тут нету регулярок) Один кодит так, что ничего не понятно - другой говорит - "нормалец код, вот бы комменты"
1
Blekzet
3 / 3 / 7
Регистрация: 21.12.2015
Сообщений: 173
19.06.2016, 04:26  [ТС] #15
rikimaru2013, было бы больше опыта и времени, может сделал бы и лучше... :3
0
vlisp
443 / 412 / 103
Регистрация: 10.08.2015
Сообщений: 1,398
Завершенные тесты: 1
19.06.2016, 04:30 #16
Цитата Сообщение от avgoor Посмотреть сообщение
Я разработчик инженерного софта.
Это самый низкопробный код, который я встречал, но не всегда...
Тут вот тоже код плохой
Цитата Сообщение от Blekzet Посмотреть сообщение
while (true)
это плохо, так как условие выхода - конец файла, а не бубен
дальше int, он ограничивает размер файла, с которым можно работать 2мя гигабайтами,хотя я не думаю, что у автора файлы размером больше 2 гигабайта... ну и т.д.
1
avgoor
1007 / 601 / 156
Регистрация: 05.12.2015
Сообщений: 1,686
19.06.2016, 04:31 #17
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
Один кодит так, что ничего не понятно - другой говорит - "нормалец код, вот бы комменты"
Ну что ж. Есть вещи, которые постигаются только через боль. К сожалению, в проектах размера хеллоуворлда их не постичь.
0
vlisp
443 / 412 / 103
Регистрация: 10.08.2015
Сообщений: 1,398
Завершенные тесты: 1
19.06.2016, 04:33 #18
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
другой говорит - "нормалец код, вот бы комменты"
тебе бы в дизайнеры, фантазия через чур хорошая
0
Blekzet
3 / 3 / 7
Регистрация: 21.12.2015
Сообщений: 173
19.06.2016, 04:34  [ТС] #19
vlisp, Мне так посоветовали сделать, что бы не было странных символов в файле вывода типа "я" или "@"
0
avgoor
1007 / 601 / 156
Регистрация: 05.12.2015
Сообщений: 1,686
19.06.2016, 04:35 #20
Цитата Сообщение от vlisp Посмотреть сообщение
Это самый низкопробный код, который я встречал
Смотря, что считать показателем низкопробности. Если в первую очередь важна производительность - в высоконагруженных местах будет чистый C со всеми вытекающими.
0
19.06.2016, 04:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.06.2016, 04:35
Привет! Вот еще темы с решениями:

Опять указатели
Здравствуйте. Изучаю эти туториалы: http://www.rastertek.com/dx11tut03.html В...

опять же строки
в общем дана строка состоящая из слов разделенных пробелами, нужно поменять...

Опять танки :D
Сами танки я нарисовал, нашел алгоритм который просчитывает столкновение...

Опять текстуры
Я,наверное,всех уже достал с текстурами)Но всё же вот фрагменты кода рисовка...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

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