C program to remove all repeated characters from a given string
Learn how to write a C program to remove all repeated characters from a given string. This guide includes step-by-step instructions, code implementation, and detailed explanations for beginners in C programming.
In this article, we will discuss how to write a C program that removes all repeated characters from a given string, leaving only the first occurrence of each character. This task is useful in text processing applications where you need to clean up or standardize input data.
Objective
The goal is to create a C program that takes a string as input, removes all repeated characters, and then prints the modified string with only the first occurrences of each character.
Approach
To solve this problem, we will:
- Read the input string from the user.
- Use an auxiliary data structure to keep track of the characters that have already appeared in the string.
- Traverse the string and construct a new string that contains only the first occurrence of each character.
- Print the modified string.
Detailed Steps
- Read the input string:
- Use standard input functions to get the string from the user.
- Track characters using an auxiliary data structure:
- Use an array to keep track of characters that have already appeared in the string.
- Construct the modified string:
- Traverse the input string, and for each character, check if it has already appeared using the auxiliary array. If not, add it to the new string.
- Print the modified string:
- Print the resulting string after removing all repeated characters.
Write a C program to remove all repeated characters from a given string
Below is the complete C program that implements the above steps:
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
int hash[256] = {0}; // Array to keep track of character occurrences
int i, j = 0;
// Input the string
printf("Enter a string: ");
fgets(str, sizeof(str), stdin);
// Remove newline character from string if present
size_t len = strlen(str);
if (len > 0 && str[len - 1] == '\n') {
str[len - 1] = '\0';
}
// Traverse the string and remove all repeated characters
for (i = 0; i < strlen(str); i++) {
if (hash[(int)str[i]] == 0) {
hash[(int)str[i]] = 1;
str[j++] = str[i];
}
}
str[j] = '\0'; // Null terminate the modified string
// Print the modified string
printf("String after removing all repeated characters: %s", str);
return 0;
}
Output
Enter a string: prrooccooooodding
String after removing all repeated characters: procding
Explanation of the Program
- Input Handling:
- The program uses
fgets()
to read a line of text from the user, ensuring that spaces and special characters are included. - It removes any trailing newline character added by
fgets()
. int hash[256] = {0}
this is a shorthand way to initialize every element in the array to 0.
- The program uses
- Tracking Characters:
- The program uses an array
hash
of size 256 to keep track of character occurrences. This array is initialized to zero.
- The program uses an array
- Constructing the Modified String:
- The program uses a
for
loop to iterate over the input string. For each character, it checks if the character has already appeared by using thehash
array. - If the character has not appeared (
hash[(int)str[i]] == 0
), it is added to the modified string, and the corresponding position in thehash
array is set to 1. - The variable
j
is used to keep track of the position in the modified string.
- The program uses a
- Output:
- The modified string is printed, showing the result after all repeated characters have been removed.