简体   繁体   中英

checking if the characters in a string are either alphabets, numbers, or special characters. in c

i have been working on a question which asks to check the numbers, alphabets or other special characters in a string.

for example if you are given two inputs. one is an integer which is string length and the second input is the string of characters.

input1: 6
input2: 4!hs%5.

the output should be: noaaon .

n stands for number, a stands for alphabets, and o stands for other.

#include<stdio.h>
#include<string.h>

int main(){
    char c[20];
    int n,i;

    scanf("%d %s",&n,c);
    for(i=1;c[i]<=n;i++)
        if(i>='a' && i<='z')
            printf("%c\n",(c[i]));
    if(i=='!')
        printf("%c \n",i);
    else
    {
        printf("%c \n",);
    } 
    return 0;
}

Why not just try something much simpler like isalpha() and isdigit() like

for( i = 0 ; i < n ; i++ )
  {
     if ( isalpha( c[i] ) )
        // it is an alphabet, so some code
     else if ( isdigit ( c[i] ) )
        // it is a number , so some code
     else
        // it is some other character
  }

This is actually much simpler than your current code

#include <stdio.h>
#include <string.h>
#include <ctype.h>

int main(void) {
    char input[10];
    char out[10];
    int i;
    memset(out, '\0', 10);
    scanf("%s", input);
    for(i = 0; i < strlen(input); ++i){
        if( (c[i] >= 'a' && c[i] <= 'z') ||  (c[i] >= 'A' && c[i] <= 'Z') ){
            out[i] = 'a';
        }
        else if(isdigit(c[i])){
            out[i] = 'n';
        }
        else{
            out[i] = 'o';
        }
    }
    printf("%s", out);
    return 0;
}

You can try it here: http://ideone.com/d8Id1Z

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM