Exercise 2-4 (squeezes - Remove string chars from another string)
Chapter_2 Exercise_2-3 strcat | Exercise_2-5 |
Exercise 2-4 K&R, p. 48
Exercise 2-4. Write an alternate version of squeeze(s1,s2) that deletes each character in s1 that matches any character in the string s2.
Note: See also squeeze.
CONTENTS: squeezes1.c squeezes2.c
squeezes1.c download
#include <stdio.h> // for printf(), scanf()
#define LENGTH 100 // max word length
void squeezes(char s[], char t[]); // remove all of t[] from s[]
int main()
{
char s1[LENGTH], s2[LENGTH];
printf("Type a word: ");
scanf("%s", s1);
printf("Type another word: ");
scanf("%s", s2);
printf("squeezes(%s, %s): ", s1, s2);
squeezes(s1,s2);
printf("%s\n", s1); // s2 unchanged
return 0;
}
void squeezes(char s[], char t[]) // remove all of t[] from s[]
{
int i, j, k;
for (i = 0; t[i] != '\0'; i++)
{
for (j = k = 0; s[j] != '\0'; j++)
{
if (s[j] != t[i]) {s[k++] = s[j];}
}
s[k] = '\0';
}
}
/*
gcc squeezes1.c -o squeezes1
./squeezes1
Type a word: abracadabra
Type another word: bro
squeezes(abracadabra, bro): aacadaa
*/
squeezes2.c download
#include <stdio.h>
#define LENGTH 100 // max word length
void squeeze(char[], int); // remove all occurrences of a char from a string
void squeezes(char s[], char t[]); // remove all of t[] from s[]
int main()
{
char s1[LENGTH], s2[LENGTH];
printf("Type a word: ");
scanf("%s", s1);
printf("Type another word: ");
scanf("%s", s2);
printf("squeezes(%s, %s): ", s1, s2);
squeezes(s1,s2);
printf("%s\n", s1); // s2 unchanged
return 0;
}
void squeeze(char s[], int c) // remove all c from s[]
{
int i, j;
for (i = j = 0; s[i] != '\0'; i++)
{
if (s[i] != c) {s[j++] = s[i];}
}
s[j] = '\0';
}
void squeezes(char s[], char t[]) // remove all of t[] from s[]
{
int i;
for (i = 0; t[i] != '\0'; i++)
{
squeeze(s, t[i]);
}
}
/*
gcc squeezes2.c -o squeezes2
./squeezes2
Type a word: abracadabra
Type another word: bro
squeezes(abracadabra, bro): aacadaa
*/
Chapter_2 Exercise_2-3 strcat | BACK_TO_TOP | Exercise_2-5 |
Comments
Post a Comment