Не работает простенькая программа - C (СИ)
Формулировка задачи:
Привет всем.
Я изучаю язык С и сделал вот такую программку(сразу скажу что она запускается и выкидывает):
Я её отредактировал до тех пор пока она не начнет запускаться. Она запускается и сразу выкидывает меня оттуда. Суть программы такова что она должна оставить в первой строке только те элементы, которые не встречаются во второй строке.Прогонял пошагово через F8 так оно доходит до функции и сразу выкидывает как в неё зашло.
Пол дня уже мучаюсь над прогой этой. Оно конечно полезно помучаться когда учишь язык. но уже просто не пойму что можно попробовать чтоб заработало.
Может кто-то увидит ошибку. Заранее спасибо.
#include<stdio.h> #include<conio.h> #include<string.h> void udal(char s[],char st[]); void main() { char s[]="abcd"; char st[]="bc"; udal(s,st); // из s удаляются все элементы которые имеются в st printf("%s",s); getch(); } void udal(char s[],char st[]) { char res[]="",prom[1]; int i,j,n; n=strlen(s); for(i=strlen(st);i>=0;i--){ for( j=0;j<n;j++) if(st[i]!=s[j]) { prom[1]=s[j]; strcat(res,prom); } strcpy(s,res); n=strlen(s); strcpy(res,""); } }
Решение задачи: «Не работает простенькая программа»
textual
Листинг программы
#include<stdio.h> #include<conio.h> #include<string.h> void udal(char s[],char st[]); int main() { char s[]="abcd"; char st[]="bc"; udal(s,st); // из s удаляются все элементы которые имеются в st printf("%s",s); getch(); return 0; } void udal(char s[],char st[]) { char res[256]="",prom[2]; prom[1]='\0'; int i,j,n; n=strlen(s); for(i=strlen(st);i>=0;i--){ for( j=0;j<n;j++) if(st[i]!=s[j]) { prom[0]=s[j]; strcat(res,prom); } strcpy(s,res); n=strlen(s); strcpy(res,""); } }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы: stdio.h, conio.h, string.h
- Определяется функция udal с двумя аргументами типа char.
- В функции main создаются две строки s и st, и вызывается функция udal.
- В функции udal создаются три дополнительные переменные: res, prom, n.
- В prom инициализируется пустая строка, а в n записывается длина строки s.
- Происходит два вложенных цикла: внешний - перебирает символы строки st, внутренний - перебирает символы строки s.
- Если текущий символ строки s соответствует текущему символу строки st, то он добавляется в конец строки res.
- После завершения циклов, содержимое строки s заменяется на содержимое строки res.
- Функция main завершается возвратом значения 0, что означает успешное выполнение программы.
- Программа выводит на экран содержимое строки s.
- В функции main вызывается функция getch для приостановки выполнения программы до нажатия клавиши.
- В функции udal после завершения циклов, переменная n обнуляется, и строка res инициализируется пустой строкой.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д