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

Buy a domain name - Register cheap domain names from $0.99 - Namecheap

Scalable Hosting That Grows With You

Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Semrush - keyword research tool

Boost your online presence with premium web hosting and servers

Disclosure: My content contains affiliate links.

39,885 questions

51,811 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
...