Hello. I've written a procedure that's supposed to remove all occurances of string2 from string1 (parameters). For reasons I do not understand, the program compiles but segfaults when run from the command prompt, but silently executes without a warning when run under GDB. Attached is the program. Segfault occurs on line 29, as far as I can tell.
#include <stdio.h> #define yes 1 #define no 0
main() { squeezechar2("abcdeFghijklmnopqrstuvwxyZ","deF"); } squeezechar2(s1,s2) char s1[]; char s2[]; { int c1,c2; int s2length; int factor=0; int moo; int matches=no; for (s2length=0;s2[s2length]!='\0';s2length++); // find out s2length for (c1=c2=0;s1[c1] != '\0' ; c1++) { // loop to end of string if (s1[c1]==s2[c2]) { // if first char matches for (matches=yes,moo=0;(moo<s2length) && (s1[c1+moo]==s2[moo]);moo++); if (moo!=s2length) matches=no; else factor+=s2length; // factor changes if there's a match } // printf("%c",s1[c1]); if (factor!=0) s1[c1]=s1[c1+factor]; } }