не могу придумать более походящей темы, НО проблема такова:
Техническая часть олимпиадной задачи. Язык как выше написано Си. Проблема в том, что код компилится без ошибок и предупреждений на gcc во FreeBSD_6.0релиз. Но при попытке ./a.out пишет далеко не указываемую t_out строку, а ошибку:
Bus error (core dumped)
И на этом всё прекращается.
Есть файл0 с входными данными «psycho.in».
Вот код:
#include
#include
char *razdel(char *stroka,int two)
{
char *st1,*st2,*nll=«\0»,*spc=» »;
int flag,i,last;/*
0 = write to st1
1 = write to st2
2 = end of «stroka»
*/
for (i=0;i
if(strcmp((stroka+i),nll))flag=1;
if(strcmp((stroka+i),spc))flag=2;
switch(flag){
case(0):strcpy((st1+i),(stroka+i));last=i;break;
case(1):strcpy((st2+i-last),(stroka+i));break;
case(2):break;
};
};
if(two)return st2;
else return st1;
};
int main()
{
char *ifile=«psycho.in»,*ofile=«psycho.out»;
char *buffer,*t_out;
int usr,not;
FILE *str;
str=fopen(ifile,«r»);
buffer=fgets(buffer,15,str);
str=freopen(ofile,«w»,str);
t_out=razdel(buffer,1);
fputs(t_out,str);
fclose(str);
};
Помогите плиз) учень нужно.
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
Твоя функция возвращает поинтер на локальную переменную (st1, st2), которая не существует, после того, как функция вышла. Соответственно, выводится тот мусор, который теперь по этому адресу находится.
Good Luck,
UT
попробовал объявить st1 и st2 как extern. Пишет:
[Linker error] undefined reference to `st1\′
и тоже самое про st2 :’-(
сенкс. буду думать
сори за тупость)
fscanf(«%d %d»,&usr,¬);
printf(«%d»,usr);
printf(«\n%d»,not);
<шопотом>
А ты их глобальными сделай. Экстерн — это из другой оперы…
</шопотом>
а на это gcc на фре пишет тож самое «Bus error(core dumped).
пробовал из винды в Dev-C++. компилит, но при вызове бинарика врубает дебагер :-), который с нет_студией идет.
наверно за мной КГБ следит…
Видимо из другого места сифонит.
У тебя дебаггер хороший есть? valgrind, например?
Я попозже тоже могу глянуть, не сейчас…
Good Luck,
UT
из сегодняшнего проганья я понял, что ночью надо спать или не спать, но по другим поводам
case(0):strcpy((st1+i),(stroka+i));last=i;break;
case(1):strcpy((st2+i-last),(stroka+i));break;
у тебя st1 и st2 ни на что не ссылаются. т.е. вполне реален вариант, что ты копируешь строки хрен знает куда.
ух.. разобрался кое-как) сенкс