Untitled
unknown
plain_text
2 years ago
4.7 kB
12
Indexable
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_TEXT_LENGTH 1000
void viewText(const char* text) {
printf("Current Text: %s\n", text);
}
void editText(char* text) {
int cursorPosition = strlen(text); // Initialize cursor position at the end of the text
char input[MAX_TEXT_LENGTH];
while (1) {
printf("Text: %s\n", text);
printf("Cursor Position: %d\n", cursorPosition);
printf("Enter command (I: Insert, D: Delete, M: Move cursor, E: Exit): ");
scanf(" %s", input);
// Convert command to uppercase for easier comparison
char command = toupper(input[0]);
if (command == 'E') {
break;
} else if (command == 'I') {
char insertText[MAX_TEXT_LENGTH];
printf("Enter text to insert: ");
scanf(" %[^\n]s", insertText);
// Check if there is enough space in the text to insert the new text
if (strlen(text) + strlen(insertText) < MAX_TEXT_LENGTH) {
// Shift the existing text to the right to make space for the new text
memmove(text + cursorPosition + strlen(insertText), text + cursorPosition, strlen(text + cursorPosition) + 1);
// Insert the new text at the cursor position
strncpy(text + cursorPosition, insertText, strlen(insertText));
cursorPosition += strlen(insertText);
} else {
printf("Not enough space to insert the text.\n");
}
} else if (command == 'D') {
int numDelete;
printf("Enter number of characters to delete: ");
scanf("%d", &numDelete);
// Check if there are enough characters in the text to delete
if (strlen(text) >= numDelete) {
// Shift the remaining text to the left to overwrite the deleted characters
memmove(text + cursorPosition, text + cursorPosition + numDelete, strlen(text + cursorPosition + numDelete) + 1);
} else {
printf("Not enough characters to delete.\n");
}
} else if (command == 'M') {
int newPosition;
printf("Enter new cursor position: ");
scanf("%d", &newPosition);
// Check if the new cursor position is within the valid range
if (newPosition >= 0 && newPosition <= strlen(text)) {
cursorPosition = newPosition;
} else {
printf("Invalid cursor position.\n");
}
} else {
printf("Invalid command. Try again.\n");
}
}
}
void searchText(const char* text) {
char searchString[MAX_TEXT_LENGTH];
printf("Enter text to search: ");
scanf(" %[^\n]s", searchString);
const char* result = strstr(text, searchString);
if (result != NULL) {
printf("'%s' found at position %ld\n", searchString, result - text);
} else {
printf("'%s' not found in the text\n", searchString);
}
}
void replaceText(char* text) {
char searchString[MAX_TEXT_LENGTH];
printf("Enter text to replace: ");
scanf(" %[^\n]s", searchString);
char replacementString[MAX_TEXT_LENGTH];
printf("Enter replacement text: ");
scanf(" %[^\n]s", replacementString);
char* result = strstr(text, searchString);
if (result != NULL) {
int position = result - text;
memmove(result + strlen(replacementString), result + strlen(searchString), strlen(result + strlen(searchString)) + 1);
strncpy(result, replacementString, strlen(replacementString));
printf("'%s' replaced with '%s' at position %d\n", searchString, replacementString, position);
} else
{printf("'%s' not found in the text\n", searchString);}
}
int main() {
char text[MAX_TEXT_LENGTH] = "";
int choice;
while (1) {
printf("\n--- MENU ---\n");
printf("1) View Text\n");
printf("2) Edit Text\n");
printf("3) Search Text\n");
printf("4) Replace Text\n");
printf("5) Exit\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch (choice) {
case 1:
viewText(text);
break;
case 2:
editText(text);
break;
case 3:
searchText(text);
break;
case 4:
replaceText(text);
break;
case 5:
printf("Exiting...\n");
return 0;
default:
printf("Invalid choice. Try again.\n");
}
}
return 0;
}
Editor is loading...