Added code
This commit is contained in:
parent
3f265a1af4
commit
e5a7b72537
3 changed files with 254 additions and 0 deletions
19
Makefile
Normal file
19
Makefile
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
all: asciidencoder
|
||||||
|
|
||||||
|
WARNINGS = -Wall
|
||||||
|
DEBUG = -ggdb -fno-omit-frame-pointer
|
||||||
|
OPTIMIZE = -O2
|
||||||
|
OPTS = -lm
|
||||||
|
|
||||||
|
asciidencoder: Makefile asciidencoder.c
|
||||||
|
$(CC) -o $@ $(WARNINGS) $(DEBUG) $(OPTIMIZE) $(OPTS) asciidencoder.c
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f asciidencoder
|
||||||
|
|
||||||
|
install:
|
||||||
|
echo "Installing is not supported"
|
||||||
|
|
||||||
|
run:
|
||||||
|
./asciidencoder
|
||||||
|
|
103
README.md
Normal file
103
README.md
Normal file
|
@ -0,0 +1,103 @@
|
||||||
|
# asciidencoder
|
||||||
|
|
||||||
|
## Table of Contents
|
||||||
|
|
||||||
|
- [Introduction](#introduction)
|
||||||
|
- [Building](#building)
|
||||||
|
- [Usage](#usage)
|
||||||
|
- [Options](#options)
|
||||||
|
- [Examples](#examples)
|
||||||
|
- [Notes](#notes)
|
||||||
|
|
||||||
|
## Introduction
|
||||||
|
|
||||||
|
**ascii-dencoder** is a command-line utility designed to convert strings into their corresponding ASCII codes and vice versa: from ASCII codes to characters. This tool is particularly useful for developers, students, and hobbyists involved in fields requiring ASCII manipulation or understanding.
|
||||||
|
|
||||||
|
## Building
|
||||||
|
|
||||||
|
This tool is provided as source code and can be built using `make`. By just
|
||||||
|
typing make in the terminal within the code's directory:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
make
|
||||||
|
```
|
||||||
|
|
||||||
|
You should now have an executable named `ascii-dencoder`. Optionally, you can
|
||||||
|
copy it to a location in your PATH for easier access.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
To use `ascii-dencoder`, run the executable from the command line with the
|
||||||
|
appropriate options.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./ascii-dencoder [OPTIONS] <value>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Options
|
||||||
|
|
||||||
|
**ascii-dencoder** accepts the following options:
|
||||||
|
|
||||||
|
- `-s`, `--string <value>`:
|
||||||
|
- Convert the input string to its ASCII codes.
|
||||||
|
|
||||||
|
- `-c`, `--code <value>`:
|
||||||
|
- Convert the input ASCII code to its corresponding character.
|
||||||
|
|
||||||
|
- `-h`, `--help`:
|
||||||
|
- Display the help message and exit.
|
||||||
|
|
||||||
|
- `-v`, `--version`:
|
||||||
|
- Display the program version and exit.
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
|
||||||
|
1. Convert a string to ASCII codes:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./ascii-dencoder -s "hello"
|
||||||
|
```
|
||||||
|
|
||||||
|
Output:
|
||||||
|
|
||||||
|
```
|
||||||
|
The ASCII code of the character 'h' is 104
|
||||||
|
The ASCII code of the character 'e' is 101
|
||||||
|
The ASCII code of the character 'l' is 108
|
||||||
|
The ASCII code of the character 'l' is 108
|
||||||
|
The ASCII code of the character 'o' is 111
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Convert an ASCII code to a character:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./ascii-dencoder -c 104
|
||||||
|
```
|
||||||
|
|
||||||
|
Output:
|
||||||
|
```
|
||||||
|
The ASCII character for code '104' is 'h'
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Display help message:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./ascii-dencoder -h
|
||||||
|
```
|
||||||
|
|
||||||
|
This will display detailed usage instructions and available options.
|
||||||
|
|
||||||
|
4. Display version:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./ascii-dencoder -v
|
||||||
|
```
|
||||||
|
|
||||||
|
This will show the current version of the program.
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
- The ASCII code conversion accepts numbers between 0 and 255.
|
||||||
|
- Ensure proper usage of command-line arguments to avoid unexpected behavior.
|
||||||
|
- This tool is straightforward and does not handle complex text encoding
|
||||||
|
scenarios beyond basic ASCII.
|
132
asciidencoder.c
Normal file
132
asciidencoder.c
Normal file
|
@ -0,0 +1,132 @@
|
||||||
|
/*
|
||||||
|
* asciidencoder.c
|
||||||
|
*
|
||||||
|
* Copyright 2024 Clay Gomera
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-only
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <locale.h>
|
||||||
|
#include <getopt.h>
|
||||||
|
|
||||||
|
#define VERSION 0.1
|
||||||
|
#define NAME "asciidencoder"
|
||||||
|
|
||||||
|
void stringToAscii(char* input);
|
||||||
|
void asciiToCharacter(char *input);
|
||||||
|
void displayHelp();
|
||||||
|
void displayVersion();
|
||||||
|
|
||||||
|
int main(int argc, char **argv) {
|
||||||
|
setlocale(LC_ALL, "");
|
||||||
|
|
||||||
|
int option;
|
||||||
|
int s_flag = 0, c_flag = 0;
|
||||||
|
char *s_value = NULL, *c_value = NULL;
|
||||||
|
|
||||||
|
static const char* short_options = "s:c:hv";
|
||||||
|
static struct option long_options[] = {
|
||||||
|
{"string", required_argument, NULL, 's'},
|
||||||
|
{"code", required_argument, NULL, 'c'},
|
||||||
|
{"help", no_argument, 0, 'h'},
|
||||||
|
{"version", no_argument, 0, 'v'},
|
||||||
|
{NULL, 0, NULL, 0}
|
||||||
|
};
|
||||||
|
|
||||||
|
while ((option = getopt_long(argc, argv, short_options, long_options, NULL)) != -1) {
|
||||||
|
switch (option) {
|
||||||
|
case 's':
|
||||||
|
s_flag = 1;
|
||||||
|
s_value = optarg;
|
||||||
|
break;
|
||||||
|
case 'c':
|
||||||
|
c_flag = 1;
|
||||||
|
c_value = optarg;
|
||||||
|
break;
|
||||||
|
case 'h':
|
||||||
|
displayHelp();
|
||||||
|
return 0;
|
||||||
|
case 'v':
|
||||||
|
displayVersion();
|
||||||
|
return 0;
|
||||||
|
case '?':
|
||||||
|
default:
|
||||||
|
fprintf(stderr, "Use '-h, --help' for help.\n");
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (s_flag && c_flag) {
|
||||||
|
fprintf(stderr, "Use only one option at a time.\n");
|
||||||
|
displayHelp();
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if no valid option was provided and display the help message
|
||||||
|
if (!s_flag && !c_flag) {
|
||||||
|
fprintf(stderr, "No valid options provided.\n");
|
||||||
|
displayHelp();
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check which arguments are present
|
||||||
|
if (s_flag) {
|
||||||
|
stringToAscii(s_value);
|
||||||
|
}
|
||||||
|
else if (c_flag) {
|
||||||
|
asciiToCharacter(c_value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return EXIT_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
void stringToAscii(char *input) {
|
||||||
|
input[strlen(input)] = '\0';
|
||||||
|
|
||||||
|
for (int i = 0; i < strlen(input); i++) {
|
||||||
|
printf("The ASCII code of the character '%c' is %d\n", input[i], (unsigned char)input[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Function to convert an Extended ASCII code to its corresponding character.
|
||||||
|
void asciiToCharacter(char *input) {
|
||||||
|
int charCode = atoi(input);
|
||||||
|
if (charCode < 0 || charCode > 255) {
|
||||||
|
printf("Invalid ASCII code. Must be between 0 and 255.\n");
|
||||||
|
} else {
|
||||||
|
printf("The ASCII character for code '%d' is '%c'\n", charCode, (char)charCode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Function to display the help message
|
||||||
|
void displayHelp() {
|
||||||
|
printf("Usage: %s [OPTIONS] [VALUE]\n", NAME);
|
||||||
|
printf("ASCII Decoder & Encoder.\n\n");
|
||||||
|
printf("Options:\n");
|
||||||
|
printf("\t-s, --string\tGive ASCII codes for each character in the input string.\n");
|
||||||
|
printf("\t-c, --code\tGive ASCII character for input code.\n");
|
||||||
|
printf("\t-h, --help\tDisplay this help message and exit.\n");
|
||||||
|
printf("\t-v, --version\tDisplay version and exit.\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Function to display the version information
|
||||||
|
void displayVersion() {
|
||||||
|
printf("%s v%.1f\n", NAME, VERSION);
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue