10

I'd like to share my program with some friends to show off, but naturally a lot of them are on Apple products... I use clang to compile.

263 lines of code

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

//Function declarations  
void promptchoice_main(void);  
void promptchoice_main_again(void);  
void promptinput(void);  
void promptchoice_trim(void);  
void executechoice(char choice_trim);  
void trimnumbers(void);  
void trimwhitespace(void);  
void trimletters(void);  
void trimspecial(void);  
void specifyspecial(void);  
void printresult(char input[]);  

//Global variables  
char choice_main = 0x00;  
char choice_trim = 0x00;  
char choice_detail = 0x00;  
char input[1000] = "";  
char previous_input[1000] = "";  

//Remove specific numbers, letters, punctuation or whitespace characters from input.  
int main() {  
	printf("\nWelcome! This program trims text by removing unwanted characters.\n");  
	while (1) {  
		if (strlen(previous_input) == 0) { // Check for previously trimmed text in memory.  
			promptchoice_main();  
			if (choice_main == 'E') { break; }  
			if (choice_main == 'T') {  
				promptinput();  
				promptchoice_trim();  
				executechoice(choice_trim);  
				printresult(input);  
			}  
		}  
		else {  
			promptchoice_main_again();  
			if (choice_main == 'E') { break; }  
			if (choice_main == 'T') {  
				promptinput();  
				promptchoice_trim();  
				executechoice(choice_trim);  
				printresult(input);  
			}  
			else if (choice_main == 'P') {  
				sprintf(input, "%s", previous_input);  
				printf("\nYou are trimming previously trimmed text: %s\n", input);  
				promptchoice_trim();  
				executechoice(choice_trim);  
				printresult(input);  
			}  
		}  
	}  
	printf("\nGoodbye!\n");  
	return 0;  
}  

//Function definitions  
void promptchoice_main(void) {  
	while (1) {  
		printf("\nPress T and ENTER to trim text or E and ENTER to exit: ");  
		scanf("%c", &choice_main);  
		while (getchar() != '\n') {}  
		if (choice_main == 'T' || choice_main == 'E') { break; }  
		else { printf("\nInvalid input!\n"); }  
	}  
	return;  
}  

void promptchoice_main_again(void) {  
	while (1) {  
	printf("\nPress T and ENTER to trim new text, P and ENTER to trim previously trimmed text or E and ENTER to exit: ");  
	scanf("%c", &choice_main);  
	while (getchar() != '\n') {}  
		if (choice_main == 'T' || choice_main == 'P' || choice_main == 'E') { break; }  
		else { printf("\nInvalid input!\n"); }  
	}  
	return;  
}  

void promptinput(void) {  
	printf("\nEnter the text that you would like to trim and press ENTER: ");  
	fgets(input, sizeof input, stdin);  
	input[strlen(input) - 1] = '\0';  
	return;  
}  

void promptchoice_trim(void) {  
	while (1) {  
		int x = 0;  
		int n = 0;  
		printf("\nWhat would you like to trim?\n1) Numbers (1, 2, 3...)\n2) Whitespace (space, tab or newline) \n3) Letters (A,B,C... a,b,c...)\n4) Special characters (!,?, . , ...)\nType one of the above numbers and press ENTER: ");  
		scanf("%c", &choice_trim);  
		while (getchar() != '\n') {}  
		if (choice_trim < 0x31 || choice_trim > 0x34) { printf("\nInvalid choice!\n"); } 
		else if (choice_trim == 0x31) {  
			for (n = strlen(input) - 1; n >= 0; n--) {  
				if (input[n] >= 0x30 && input[n] <= 0x39) { x++; }  
			}  
			if (x == 0) { printf("\nNo numbers found!\n"); }  
			else { break; }  
		}  
		else if (choice_trim == 0x32) { 
			for (n = strlen(input) - 1; n >= 0; n--) {  
				if (input[n] == 0x20 || input[n] == 0x09 || input[n] == 0x0A) { x++; }  
			}  
			if (x == 0) { printf("\nNo whitespace found!\n"); }  
			else { break; }  
		}  
		else if (choice_trim == 0x33) {  
			for (n = strlen(input) - 1; n >= 0; n--) {  
				if (input[n] >= 0x41 && input[n] < 0x5A || input[n] >= 0x61 && input[n] <= 0x7A ) { x++; }  
			}  
			if (x == 0) { printf("\nNo letters found!\n");	}  
			else { break; }  
		}  
		else if (choice_trim == 0x34) {  
			for (n = strlen(input) - 1; n >= 0; n--) {  
				if (input[n] >= 0x21 && input[n] < 0x2F || input[n] >= 0x3A && input[n] < 0x40 || input[n] >= 0x5B && input[n] < 0x60 || input[n] >= 0x7B && input[n] <= 0x7E) { x++; }  
			}  
			if (x == 0) { printf("\nNo special characters found!\n"); }  
			else { break; }  
		}  
	}  
	return;  
}  

void executechoice(char choice_trim) {  
	switch (choice_trim) {  
		case 0x31:  
			trimnumbers(); // 123 etc  
			break;  

		case 0x32:  
			trimwhitespace(); // space, tab, newline  
			break;  
		
		case 0x33:  
			trimletters(); // ABC..., abc...  
			break;  

		case 0x34:  
			trimspecial(); // ! ? , . etc.  
			break;  
	}  
	return;  
}  

void trimnumbers(void) {  
	int n = 0;  
	for (n = strlen(input) - 1; n >= 0; n--) {  
		if (input[n] >= 0x30 && input[n] <= 0x39) { input[n] = 0x18; }  
	}  
	return;  
}  

void trimwhitespace(void) {  
	while (1) {  
		printf("\nType S to trim SPACE, T to trim TAB, N to trim NEWLINE or A to trim all whitespace: ");  
		scanf("%c", &choice_detail);  
		while (getchar() != '\n') {}  
		if (choice_detail == 'S' || choice_detail == 'T' || choice_detail == 'A') { break; }  
		else { printf("\nInvalid input!\n"); }  
	}  
	int n = 0;  
	for (n = strlen(input) - 1; n >= 0; n--) {  
		if (choice_detail == 'S') { if (input[n] == 0x20) { input[n] = 0x18; } } // space  
		else if (choice_detail == 'T') { if (input[n] == 0x09) { input[n] = 0x18; } } // tab  
		else if (choice_detail == 'N') { if (input[n] == 0x0A) { input[n] = 0x18; } } // newline  
		else if (choice_detail == 'A') { if (input[n] == 0x20 || input[n] == 0x09 || input[n] == 0x0A) { input[n] = 0x18; } }  
	}  
	return;  
}  

void trimletters(void) {  
	int x = 0;  
	int n = 0;  
	while (1) {  
		printf("\nType U to trim uppercase letters, L to trim lowercase letters or A to trim all letters: ");  
		scanf("%c", &choice_detail);  
		while (getchar() != '\n') {}  
		if (choice_detail != 'U' && choice_detail != 'L' && choice_detail != 'A') { printf("\nInvalid input!\n"); }  
		else if (choice_detail == 'U') {  
			for (n = strlen(input) - 1; n >= 0; n--) {  
				if (input[n] >= 0x41 && input[n] <= 0x5A) { x++; }  
			}  
			if (x == 0) { printf("\nUppercase letters not found!\n"); }  
			else {  
				for (n = strlen(input) - 1; n >= 0; n--) {  
					if (input[n] >= 0x41 && input[n] <= 0x5A) { input[n] = 0x18; }  
				}  
				break;  
			}  
		}  
		else if (choice_detail == 'L') {  
			for (n = strlen(input) - 1; n >= 0; n--) {  
				if (input[n] >= 0x61 && input[n] <= 0x7A ) { x++; }  
			}  
			if (x == 0) { printf("\nLowercase letters not found!\n"); }  
			else {  
				for (n = strlen(input) - 1; n >= 0; n--) {  
					if (input[n] >= 0x61 && input[n] <= 0x7A ) { input[n] = 0x18; }  
				}  
				break;  
			}  
		}  
		else if (choice_detail == 'A') {  
			for (n = strlen(input) - 1; n >= 0; n--) {  
				if (input[n] >= 0x41 && input[n] <= 0x5A || input[n] >= 0x61 && input[n] <= 0x7A ) { input[n] = 0x18; }  
			}  
			break;  
		}  
	}  
	return;  
}  

void trimspecial(void) {  
	while (1) {  
		printf("\nType A to trim all special characters or S to specify which character to remove: ");  
		scanf("%c", &choice_detail);  
		while (getchar() != '\n') {}  
		if (choice_detail == 'A' || choice_detail == 'S') { break; }  
		else { printf("\nInvalid input!\n"); }  
	}  
	int n = 0;  
	for (n = strlen(input) - 1; n >= 0; n--) {  
		if (choice_detail == 'A') { if (input[n] >= 0x21 && input[n] <= 0x2F || input[n] >= 0x3A && input[n] <= 0x40 || input[n] >= 0x5B && input[n] <= 0x60 || input[n] >= 0x7B && input[n] <= 0x7E) { input[n] = 0x18; } } // All whitespace  
	}  
	if (choice_detail == 'S') { specifyspecial(); } // Let user specify character.  
	return;  
}  

void specifyspecial(void) {  
	char choice_special = 0x00;  
	int x = 0;  
	int n = 0;  
	while (1) {  
		printf("\nEnter special character to trim and press ENTER: ");  
		scanf("%c", &choice_special);  
		while (getchar() != '\n') {}  
		if (choice_special < 0x21 || choice_special > 0x2F && choice_special < 0x3A || choice_special > 0x40 && choice_special < 0x5B || choice_special > 0x60 && choice_special < 0x7B || choice_special > 0x7E) { printf("\nNot a special character!\n"); }  
		else {  
			for (n = strlen(input) - 1; n >= 0; n--) {  
				if (input[n] == choice_special) { x++; }  
			}  
			if (x == 0) { printf("\nCharacter not found!\n"); }  
			else { break; }  
		}  
	}  
	for (n = strlen(input) - 1; n >= 0; n--) { if (input[n] == choice_special) { input[n] = 0x18; } }  
	return;  
}  

void printresult(char input[]) {  
	printf("\nTrimmed text:\n\n%s\n", input);  
	sprintf(previous_input, "%s", input); // Save trimmed text for reuse.  
	return;  
}  

//TODO  
//Replace characters (uppercase/lowercase, user selected, etc).  

no comments (yet)
sorted by: hot top new old
there doesn't seem to be anything here
this post was submitted on 23 Jun 2026
10 points (100.0% liked)

techsupport

3193 readers
1 users here now

The Lemmy community will help you with your tech problems and questions about anything here. Do not be shy, we will try to help you.

If something works or if you find a solution to your problem let us know it will be greatly apreciated.

Rules: instance rules + stay on topic

Partnered communities:

You Should Know

Reddit

Software gore

Recommendations

founded 3 years ago
MODERATORS