Upload files to "DS/C/Lab/Week2"
This commit is contained in:
parent
51cc29eb50
commit
c23e09cb90
5 changed files with 459 additions and 0 deletions
119
DS/C/Lab/Week2/StringHandler.c
Normal file
119
DS/C/Lab/Week2/StringHandler.c
Normal file
|
@ -0,0 +1,119 @@
|
|||
#include <stdio.h>
|
||||
|
||||
int string_length(char str[]) {
|
||||
int length = 0;
|
||||
while (str[length] != '\0') {
|
||||
length++;
|
||||
}
|
||||
return length;
|
||||
}
|
||||
|
||||
void string_concatenate(char str1[], char str2[], char result[]) {
|
||||
int i = 0, j = 0;
|
||||
while (str1[i] != '\0') {
|
||||
result[j++] = str1[i++];
|
||||
}
|
||||
i = 0;
|
||||
while (str2[i] != '\0') {
|
||||
result[j++] = str2[i++];
|
||||
}
|
||||
result[j] = '\0';
|
||||
}
|
||||
|
||||
int string_compare(char str1[], char str2[]) {
|
||||
int i = 0;
|
||||
while (str1[i] != '\0' && str2[i] != '\0') {
|
||||
if (str1[i] != str2[i]) {
|
||||
return (str1[i] < str2[i]) ? -1 : 1;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
if (str1[i] == '\0' && str2[i] == '\0') {
|
||||
return 0;
|
||||
} else if (str1[i] == '\0') {
|
||||
return -1;
|
||||
} else {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
void string_insert(char str[], char substr[], int pos, char result[]) {
|
||||
int i = 0, j = 0, k = 0;
|
||||
int str_length = string_length(str);
|
||||
int substr_length = string_length(substr);
|
||||
|
||||
while (i < pos && i < str_length) {
|
||||
result[j++] = str[i++];
|
||||
}
|
||||
while (substr[k] != '\0') {
|
||||
result[j++] = substr[k++];
|
||||
}
|
||||
while (i < str_length) {
|
||||
result[j++] = str[i++];
|
||||
}
|
||||
result[j] = '\0';
|
||||
}
|
||||
|
||||
void string_delete(char str[], int pos, int length, char result[]) {
|
||||
int i = 0, j = 0;
|
||||
int str_length = string_length(str);
|
||||
|
||||
while (i < pos && i < str_length) {
|
||||
result[j++] = str[i++];
|
||||
}
|
||||
i += length;
|
||||
while (i < str_length) {
|
||||
result[j++] = str[i++];
|
||||
}
|
||||
result[j] = '\0';
|
||||
}
|
||||
|
||||
int main() {
|
||||
char str1[100], str2[100], result[200];
|
||||
int choice, pos, length;
|
||||
|
||||
printf("Enter the first string: ");
|
||||
scanf("%99s", str1);
|
||||
printf("Enter the second string: ");
|
||||
scanf("%99s", str2);
|
||||
|
||||
printf("\nChoose an operation:\n");
|
||||
printf("1. Length of the first string\n");
|
||||
printf("2. Concatenate strings\n");
|
||||
printf("3. Compare strings\n");
|
||||
printf("4. Insert second string into first string at position\n");
|
||||
printf("5. Delete substring from first string\n");
|
||||
printf("Enter your choice: ");
|
||||
scanf("%d", &choice);
|
||||
|
||||
switch (choice) {
|
||||
case 1:
|
||||
printf("Length of the first string: %d\n", string_length(str1));
|
||||
break;
|
||||
case 2:
|
||||
string_concatenate(str1, str2, result);
|
||||
printf("Concatenated string: %s\n", result);
|
||||
break;
|
||||
case 3:
|
||||
printf("String comparison result: %d\n", string_compare(str1, str2));
|
||||
break;
|
||||
case 4:
|
||||
printf("Enter position to insert the second string: ");
|
||||
scanf("%d", &pos);
|
||||
string_insert(str1, str2, pos, result);
|
||||
printf("String after insertion: %s\n", result);
|
||||
break;
|
||||
case 5:
|
||||
printf("Enter position to start deletion: ");
|
||||
scanf("%d", &pos);
|
||||
printf("Enter length of substring to delete: ");
|
||||
scanf("%d", &length);
|
||||
string_delete(str1, pos, length, result);
|
||||
printf("String after deletion: %s\n", result);
|
||||
break;
|
||||
default:
|
||||
printf("Invalid choice.\n");
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue