处理字符串的一些C函数
注意:以下函数都包含在ctype.h头文件中
1.isalpha函数 用来判断得到的参数是不是字母
#include<stdio.h>
#include<ctype.h> int main ()
{
/*
isalpha函数用来检测数值是否为大小写字母 返回值分为三种
1.大写字母,返回值为1
2.小写字母,返回值为2
3.不是字母,返回值为0
*/
char c ;
scanf("%c",&c);
int State;
State=isalpha(c);//大写字母返回1 小写字母返回2
// printf("%d",State); if(State==)
{
printf("输入的是大写字母\n");
}
else if (State==)
{
printf("输入的是小写字母\n");
}
else {
printf("sb你输入的不是字母\n");
} return ;
}
因为isalpha只能判断单个字符,感觉不是那么好用的样子 ,百度了一下它的相关资料,在百度百科词条中发现了一个利用这个函数来写的一个判断输入字母个数的程序 如下:
#include<ctype.h>
#include<stdio.h>
int main(void)
{
char ch;
int total;
total=;//赋值
/*统计字母块*/
do
{
ch=getchar();
if(isalpha(ch)!=)
++total;
}while(ch!='.');//结束符号为.
printf("The total of letters is:%d\n",total);
return ;
}
/*运行结果*/
输入:123456我am侯云江.
输出:The total of letters is:
下面的代码,是我对上面的代码,做过了一些小的改动,比如 我将结束符号 改为换行符 这样更人性化了一些 不用输入 "." 来作为 输入的结束符号 因为\n 换行符,表示将键盘缓冲区的数据发送到程序中 也就是一次输入的结束 getchar();也会接受这个换行符 它们之间是不会影响的 在一次输入结束的同时 getchar()也会得到 \n ch=\n 后 经过while判断后 条件不满足 就可以退出循环了
# include <stdio.h>
# include <ctype.h> int main ()
{
char ch;
int total=; //初始化 //统计输入字母数量
do{
ch=getchar();
if(isalpha(ch)!=)
{
total=total+;
}
} while(ch!='\n'); //设置字符串的结束符号为 \n 可任意设置
printf("共输入了%d个字母\n",total);
return ;
}
/*
1.用getchar() 从键盘中读入一个字符 到ch变量中
2.用if语句来判断isalpha函数返回的值 不为0的话 则是字符(大小写都有可能)total的值加1
3.判断n+1次ch的值是否 为换行符 如果是话 就终止循环 结束程序 为什么是n+1次呢?
我输入a然后回车
a传到ch中 经过isalpha判断后返回值为非0 条件成立 执行if中语句 total=1
判断ch值不为\n
\n 传入到ch中 经过isalpha函数判断为0 条件不成立 不执行if中语句 total值不变
while判断 ch的值== \n 条件不成立 终止循环 */
下面的代码是我做的测试,内容是再输入很多字符的时候 最终ch的值会是多少
# include <stdio.h>
# include <ctype.h> int main () {
char a,b,c;
do{ a=getchar(); }while(a!='.');
printf("%c",a); return ;
}
运行结果:

由此可见 在do while循环中 你输入的最后一个字符 就为a或者ch 变量中的值 我输入的值是. 换行符也是一样 只是 换行符还有一种的一种作用就是结束输入 将键盘缓冲区中的数据放到程序中 在这里例子中也就是发送到a变量中 上个例子就是发送到ch变量中
2.isdigit函数 判断得到的参数是否为阿拉伯数字0-9
|
函数说明
|
检查参数c是否为阿拉伯数字0到9。
|
|
返回值
|
若参数c为阿拉伯数字,则返回TRUE,否则返回NULL(0)。
|
相关代码的联系 用isdigit函数找出一串字符串中的数字 用循环的方式 遍历数组中的每个元素 将每个元素都作为isdigit的参数
#include<stdio.h>
#include<ctype.h>
int main()
{
char str[]="123@#FDsP[e?";
int i; /*
0.断str[x]中保存的值 不是结束符号的话 就一直循环
1.用if判断isdigit中的返回值 如果是非0 则条件成立 执行if语句中内容
2.打印对应的str[x]字符数组中的值 */
for(i=;str[i]!='\0';i++)
{
if( isdigit (str[i]) )
printf( "%c is an digit character\n",str[i] );
}
}
3.isalnum函数 传入的参数如果是字符(包含0-9阿拉伯数字+大小写字母)就返回true(!0) 否则返回 0 主要用来判断 我猜是用来判断传入的特殊符号
结合前三个函数做的一个小程序 从键盘中读入字符串 输入字符串中字母个数(大小写字母个数)和数字个数和特殊符号个数
#include<stdio.h>
#include<ctype.h> //从键盘中读入字符串 输入字符串中字母个数(大小写字母个数)和数字个数和特殊符号个数
int main ()
{
char name[];
gets(name); //获得字符存入name字符数组中
int i,dch,xch,digit,tch;
dch=;
xch=;
tch=;
digit=;
for(i=;name[i]!=;i++)
{
if(isalpha(name[i])==) //返回值为1 为大写字母 大写字母+1
{
dch=dch+;
}
if(isalpha(name[i])==) //返回值为2 为小写字母 小写字母+1
{
xch=xch+;
}
if(isalnum(name[i])==) //返回值为0 证明值为特殊符号 不包含大小写字母和数字
{
tch=tch+;
} if(isdigit(name[i]))
{
digit=digit+;
} }
printf("你输入的字符串中有\n%d大写字母\n%d小写字母\n%d个特殊符号\n%d个数字",dch,xch,tch,digit); return ;
}
处理字符串的一些C函数的更多相关文章
- SQL SERVER 将表中字符串转换为数字的函数 (详询请加qq:2085920154)
在SQL SERVER 2005中,将表中字符串转换为数字的函数共2个:1. convert(int,字段名) 例如:select convert(int,'3')2. cast(字段名 as i ...
- SQL server 创建 修改表格 及表格基本增删改查 及 高级查询 及 (数学、字符串、日期时间)函数[转]
SQL server 创建 修改表格 及表格基本增删改查 及 高级查询 及 (数学.字符串.日期时间)函数 --创建表格 create table aa ( UserName varchar(50 ...
- c/c++中与字符串处理相关的函数
void *memccpy (void *dest, const void *src, int c, size_t n); 从src所指向的对象复制n个字符到dest所指向的对象中.如果复制过程中遇到 ...
- Go 实现字符串相似度计算函数 Levenshtein 和 SimilarText
[转]http://www.syyong.com/Go/Go-implements-the-string-similarity-calculation-function-Levenshtein-and ...
- js数组,字符串,json互相转换函数有哪些
js数组,字符串,json互相转换函数有哪些 一.总结 一句话总结: JSON.stringify(arr) JSON.parse(jsonString) str.split('') array.jo ...
- 1. python 字符串简介与常用函数
1. python中的字符串简介与常用函数 在python中,字符串变成了一个强大的处理工具集,他是不可变的,也就是说字符串包含字符与字符的顺序,他不可以原处修改 字符串是我们后面需要学习的稍大一点的 ...
- 字符串处理strcpy strcat函数的用法
C语言函数字符串处理strcpy strcat函数的用法: 1)strcat是用来连接两个字符串的,原型是char *strcat(char *dest,char *src),作用是把src所指字符串 ...
- 【微软100题】定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。 如把字符串abcdef左旋转2位得到字符串cdefab。请实现字符串左旋转的函数。
package test; /** * 定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部. 如把字符串abcdef左旋转2位得到字符串cdefab. 请实现字符串左旋转的函数. * ...
- Js中常用的字符串,数组,函数扩展
由于最近辞职在家,自己的时间相对多一点.所以就根据prototytpeJS的API,结合自己正在看的司徒大神的<javascript框架设计>,整理了下Js中常用一些字符串,数组,函数扩展 ...
- c语言中字符串转数字的函数
ANSI C 规范定义了 atof().atoi().atol().strtod().strtol().strtoul() 共6个可以将字符串转换为数字的函数,大家可以对比学习.另外在 C99 / C ...
随机推荐
- 【转】Linux C函数库参考
asctime(将时间和日期以字符串格式表示)clock(取得进程占用CPU的大约时间)ctime(将时间和日期以字符串格式表示)difftime(计算时间差距)ftime(取得目前的时间和日期)ge ...
- iOS - 倒计时封装
+(NSString *)countdownStartTime:(NSString *)startTime{ NSString *TIME = [startTime substringToIndex: ...
- Eat the Trees(hdu 1693)
题意:在n*m的矩阵中,有些格子有树,没有树的格子不能到达,找一条或多条回路,吃完所有的树,求有多少中方法. 第一道真正意义上的插头DP,可参考陈丹琦的<基于连通性状态压缩的动态规划问题> ...
- Replacing Accented characters(Diacritic) .NET
原文发布时间为:2012-02-17 -- 来源于本人的百度文章 [由搬家工具导入] using System;using System.Collections.Generic;using Syste ...
- [LeetCode] Trapping Rain Water 栈
Given n non-negative integers representing an elevation map where the width of each bar is 1, comput ...
- C++中的explicit关键字(转)
按默认规定,只用传一个参数的构造函数也定义了一个隐式转换.举个例子: #pragma once class CExample { public: CExample(void); CExample(); ...
- linux中的strip命令简介------给文件脱衣服【转】
转自:http://blog.csdn.net/stpeace/article/details/47090255 版权声明:本文为博主原创文章,转载时请务必注明本文地址, 禁止用于任何商业用途, 否则 ...
- Java编程经验汇总
JDK和JRE 大家肯定在安装JDK的时候会有选择是否安装单独的jre,一般都会一起安装,我也建议大家这样做.因为这样更能帮助大家弄清楚它们的区别: Jre 是java runtime environ ...
- Java使用HttpURLConnection调用WebService(原始方法)
说明:使用Java原生的HttpURLConnection调用WebService可以免去引入SOA的框架,比如一些CXF框架等.可以使代码足够精简,比如对于一些只调用一两个接口的,这种方式是最适合的 ...
- Windbg调试Sql Server 进程
http://blog.csdn.net/bcbobo21cn/article/details/52261466 http://www.sqlservercentral.com/blogs/asche ...