Add some string exercises

This commit is contained in:
pro100ton 2024-12-22 22:39:38 +03:00
parent 28e9800830
commit 58aa6aba6c
4 changed files with 133 additions and 0 deletions

View file

@ -0,0 +1,48 @@
#include <stdio.h>
#include <string.h>
#define MAX_REMIND 50
#define MSG_LEN 60
int read_line(char str[], int n);
int main(void) {
char reminders[MAX_REMIND][MSG_LEN + 3];
char day_str[3], msg_str[MSG_LEN + 1];
int day, i, j, num_remind = 0;
for (;;) {
if (num_remind == MAX_REMIND) {
printf("-- No space left --\n");
break;
}
printf("Enter day and reminder: ");
scanf("%2d", &day);
if (day == 0)
break;
sprintf(day_str, "%2d", day);
read_line(msg_str, MSG_LEN);
for (i = 0; i < num_remind; i++)
if (strcmp(day_str, reminders[i]) < 0)
break;
for (j = num_remind; j > i; j--)
strcpy(reminders[j], reminders[j - 1]);
strcpy(reminders[i], day_str);
strcat(reminders[i], msg_str);
num_remind++;
}
printf("\nDay Reminder\n");
for (i = 0; i < num_remind; i++)
printf(" %s\n", reminders[i]);
return 0;
}
int read_line(char str[], int n) {
int ch, i = 0;
while ((ch = getchar()) != '\n') {
if (i < n) {
str[i++] = ch;
}
}
str[i] = '\0';
return i;
}

View file

@ -0,0 +1,23 @@
#include <ctype.h>
#include <stdio.h>
#define MAX_REMIND 50
#define MSG_LEN 60
char *capitalize(char cap_string[]);
int main() {
char string_to_capitalize[] = "some fuck1ng bullshit!";
char *cap;
cap = capitalize(string_to_capitalize);
printf("%s", cap);
}
char *capitalize(char cap_string[]) {
char *p;
char capitalized_string[MSG_LEN];
p = capitalized_string;
for (int i = 0; cap_string[i] != '\0'; i++) {
capitalized_string[i] = toupper(cap_string[i]);
}
return p;
}

View file

@ -0,0 +1,26 @@
#include <ctype.h>
#include <stdio.h>
#define MAX_REMIND 50
#define MSG_LEN 60
char *capitalize(char cap_string[]);
int main() {
char string_to_capitalize[] = "some fuck1ng bullshit!";
char *cap;
cap = capitalize(string_to_capitalize);
printf("%s", cap);
}
char *capitalize(char cap_string[]) {
char *p;
char capitalized_string[MSG_LEN];
int i = 0;
p = capitalized_string;
while (*cap_string) {
capitalized_string[i] = toupper(*cap_string);
i++;
cap_string++;
}
return p;
}

View file

@ -0,0 +1,36 @@
#include <stdio.h>
#define MAX_LEN 60
char *censor(char cens_string[]);
int main() {
char string_to_censor[MAX_LEN] = "Hello my dear foolish foles!";
char *cens;
cens = censor(string_to_censor);
printf("INPUT:\t %s\n", string_to_censor);
printf("OUTPUT:\t %s\n", cens);
}
char *censor(char cens_string[]) {
char to_cens[] = "foo";
char cens_char = 'x';
char censored[MAX_LEN + 1], *c, *start;
c = censored;
start = c;
int i = 0;
// Starting iteration on string to censor
while (*cens_string) {
// If we find 'f' char - we need to check current 'f' char and next 2 for
// equality with to_cens string
if (*cens_string == to_cens[0] && *(cens_string + 1) == to_cens[1] &&
*(cens_string + 2) == to_cens[2]) {
*c = cens_char;
*(c + 1) = cens_char;
*(c + 2) = cens_char;
cens_string += 3;
c += 3;
} else {
*c++ = *cens_string++;
}
}
return start;
}