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];
  }
}
  • Re:... Eugene Romm
    • ... Max Kovgan
    • ... Vlad
    • ... Oleg Goldshmidt
    • ... Yaacov Fenster - System Engineering Troubleshooting and other miracles
    • ... Behdad Esfahbod

Reply via email to