LINUX.ORG.RU

История изменений

Исправление Extraterrestrial, (текущая версия) :

Такое сойдет?

#include <stdio.h>
#include <string.h>
#include <stdlib.h>


int main(int argc, char ** argv)
{
  char * string; 
  char * needle;
  int len;
  char * buf;
  int i = 0;

  if (argv[1] == NULL) {
    fprintf (stderr, "Usage: %s string needle\n", argv[0]);
    return 1;
  }

  string = strdup (argv[1]);
  needle = strdup (argv[2]);
  len = strlen (needle);
  buf = malloc (strlen(string) + 1);
  for(;;) {
    if (!strncmp (string, needle, len)) {
      string += len;
      continue;
    }    
    buf[i] = string[0];
    i++;
    if (string[0] == '\0') break;
    string++;
  }
  printf ("%s\n",buf);
  return 0;
}

$ gcc str2.c
$ ./a.out "root=/dev/mmcblk0p1 ro debug quiet debug splash ololo test debug" " debug"
root=/dev/mmcblk0p1 ro quiet splash ololo test

Вроде работает.

Исходная версия Extraterrestrial, :

Такое сойдет?

#include <stdio.h>
#include <string.h>
#include <stdlib.h>


int main(int argc, char ** argv)
{
  char * string; 
  char * needle;
  int len;
  char * buf;
  int i = 0;

  if (argv[1] == NULL) {
    fprintf (stderr, "Usage: %s string needle\n", argv[0]);
    return 1;
  }

  string = strdup (argv[1]);
  needle = strdup (argv[2]);
  len = strlen (needle);
  buf = malloc (strlen(string) + 1);
  for(;;) {
    if (!strncmp (string, needle, len)) {
      string += len;
      continue;
    }    
    buf[i] = string[0];
    i++;
    if (string[0] == '\0') break;
    string++;
  }
  printf ("%s\n",buf);
  return 0;
}
Вроде работает.