Сохранение общего префикса двух строк ..... C Программирование ... Ошибка ошибки сегментации - PullRequest
2 голосов
/ 25 июля 2010
char *strip_postfix(char *str1, char *str2)
{
   int i;

   for(i=0; str2[i] != '\0'; i++)
   {
      if(str1[i] != str2[i])
      {
         str1[i] = '\0';
         break;
      }
   }
   return str3;
}

Этот код выдает ошибку ошибки сегментации в строке str1 [i] = '\ 0' во время выполнения ..... Я думаю, что есть некоторая проблема с выделением памяти, в то время как я создаю новую переменную и копирую содержимое там, а затем вернуть эту новую переменную, все работает нормально .... Пожалуйста, дайте мне знать, что проблема в этом.

Ответы [ 2 ]

4 голосов
/ 25 июля 2010

Что произойдет, если str1 меньше, чем str2?

У вас также есть:

return str3;

Что заставляет меня думать, что этот код не будет компилироваться в его текущей форме ...

0 голосов
/ 25 июля 2010

Ваш код должен понравиться

int str1len =  strlen(str1);    
for(i=0; str2[i] != '\0'; i++)
   {
      if(str1[i] != str2[i] || i >= str1len)
      {
         str1[i] = '\0';
         break;
      }
   }
return str1;

Спасибо

...