Size: a a a

2020 October 20

СЗ

Санитар Зачем... in CADR
С К
вопрос.
Может кто то помочь по С программе? Пишет, зараза, ошибка сегментации. Я вроде всё перепроверил, не могу понять, чо не так.
Списывал с Прата.
https://ideone.com/6gPkh3
q1.c: In function ‘main’:
q1.c:16:5: warning: implicit declaration of function ‘gets’; did you mean ‘fget             ’? [-Wimplicit-function-declaration]
    gets(file_app);
    ^~~~
источник

СЗ

Санитар Зачем... in CADR
Санитар Зачем
q1.c: In function ‘main’:
q1.c:16:5: warning: implicit declaration of function ‘gets’; did you mean ‘fget             ’? [-Wimplicit-function-declaration]
    gets(file_app);
    ^~~~
да, ошибка сегментирования.
источник

СК

С К in CADR
Санитар Зачем
q1.c: In function ‘main’:
q1.c:16:5: warning: implicit declaration of function ‘gets’; did you mean ‘fget             ’? [-Wimplicit-function-declaration]
    gets(file_app);
    ^~~~
ага, я это предупреждение видел.
источник

СЗ

Санитар Зачем... in CADR
это не из-за функции append
источник

СЗ

Санитар Зачем... in CADR
проблема в стhоках 40-53, но не в append
источник

СК

С К in CADR
Санитар Зачем
проблема в стhоках 40-53, но не в append
но вот как это понять?
Я на самом деле С учил, но всё в теории, он по большому счёту мне не нужен был от слова совсем. Вот я саму идею понять не могу, как ошибку искать?
Я почитал про ошибки сегментации, я понимаю, что где то данные не те пишу в переменную. Но вот сама суть как это ищется -- не понимаю.
источник

СЗ

Санитар Зачем... in CADR
предположительно - вызов fclose(fs) когда fa уже не является валидным дескриптором.
источник

СЗ

Санитар Зачем... in CADR
С К
но вот как это понять?
Я на самом деле С учил, но всё в теории, он по большому счёту мне не нужен был от слова совсем. Вот я саму идею понять не могу, как ошибку искать?
Я почитал про ошибки сегментации, я понимаю, что где то данные не те пишу в переменную. Но вот сама суть как это ищется -- не понимаю.
"как ошибку искать?" исключать часть кода, смотреть на поведение. сужать область поиска.
источник

СК

С К in CADR
Санитар Зачем
предположительно - вызов fclose(fs) когда fa уже не является валидным дескриптором.
закоментировал -- не помогло
источник

СК

С К in CADR
Санитар Зачем
"как ошибку искать?" исключать часть кода, смотреть на поведение. сужать область поиска.
он и так весь на ладони.
источник

СЗ

Санитар Зачем... in CADR
а, :) там забавный принтф на 53 ей строке
источник

СЗ

Санитар Зачем... in CADR
Санитар Зачем
а, :) там забавный принтф на 53 ей строке
он!
источник

СЗ

Санитар Зачем... in CADR
перед вызовом fclose(fs) желательно проверить fs на валидность. не знаю - как fclose  работает, но тоже может быть косяк.
источник

СЗ

Санитар Зачем... in CADR
и вопрос надо будет Артёму задать или самим посмотреть - зачем там exit(3) используют, тогда как в конце main - используют return 0;
т.е. чем отличается.
источник

СЗ

Санитар Зачем... in CADR
Санитар Зачем
перед вызовом fclose(fs) желательно проверить fs на валидность. не знаю - как fclose  работает, но тоже может быть косяк.
вот это видимо у них проверочка
ferror(fs)
источник

СК

С К in CADR
чем вам не нравится 57 строка с принтф?
источник

СЗ

Санитар Зачем... in CADR
потенциальный баг - переменная files при достаточно большом количестве файлов уйдёт в отрицательные значения. Надо проверку. Понятно что вероятность мала, но есть.
источник

СК

С К in CADR
Санитар Зачем
потенциальный баг - переменная files при достаточно большом количестве файлов уйдёт в отрицательные значения. Надо проверку. Понятно что вероятность мала, но есть.
ааа. Ну сейчас то ошибка в другом!
источник

СЗ

Санитар Зачем... in CADR
С К
чем вам не нравится 57 строка с принтф?
не нравится что там %s
источник

СЗ

Санитар Зачем... in CADR
Санитар Зачем
не нравится что там %s
либо убрать %s, либо добавить указатель на строку.
источник