Spyke

I am coding in C on an Android tablet with Termux. Can I compile for MacOS?

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.

::: spoiler 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).  

:::

View original on piefed.blahaj.zone
No comments on the original post yet.
I am coding in C on an Android tablet with Termux. Can I compile for MacOS? | Spyke