Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Prodentim Probiotics Specially Designed For The Health Of Your Teeth And Gums

Instant Grammar Checker - Correct all grammar errors and enhance your writing

Teach Your Child To Read

Powerful WordPress hosting for WordPress professionals

Disclosure: My content contains affiliate links.

31,109 questions

40,780 answers

573 users

How to reverse an array of characters without affecting the special characters in C

1 Answer

0 votes
#include <stdio.h>
#include <string.h>
#include <stdbool.h>

bool is_letter(char x) { 
    return ((x >= 'a' && x <= 'z') || (x >= 'A' && x <= 'Z')); 
} 

void swap(char* ch1, char* ch2) {
    char tmp = *ch1;
    *ch1 = *ch2;
    *ch2 = tmp;
}

void reverse(char s[]) { 
    int right = strlen(s) - 1, left = 0; 
  
    while (left < right) { 
        if (!is_letter(s[left])) 
            left++; 
        else if (!is_letter(s[right])) 
                right--; 
             else { 
                swap(&s[left], &s[right]); 
                left++; 
                right--; 
             } 
    } 
} 
  
int main() 
{ 
    char s[] = "a#b$%c&*(def!"; 

    reverse(s); 
    
    puts(s);
    
    return 0; 
} 



/*
run:

f#e$%d&*(cba!

*/

 





answered Jun 15, 2019 by avibootz
edited Jun 20, 2019 by avibootz
...