//
// main.c
// 字符串
//
// Created by zhangxueming on 15/6/5.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
//
#include <stdio.h>
#include <ctype.h>
//字符操作函数
//int isalnum(int);
//int isalpha(int);
//int isdigit(int);
//int isgraph(int);
//int islower(int);
//int isupper(int);
//int isxdigit(int);
//int tolower(int);
//int toupper(int);
//int digittoint(int);
//int ishexnumber(int);//等同于 isxdigit
//int isnumber(int);//等同于 isdigit
//int main(int argc, const char * argv[]) {
//
// printf("isalnum = %d\n", isalnum('a'));//判断是否为字母或者数字字符
// printf("isalpha = %d\n", isalpha('A'));//判断是否为英文字母字符
// printf("isdigit = %d\n", isdigit('8'));//判断是否为十进制数字字符
// printf("isgraph = %d\n", isgraph('\t'));//判断是否为可见字符
// printf("islower = %d\n", islower('a'));//判断是否为小写字母
// printf("isupper = %d\n", isupper('A'));//判断是否为大写字母
// printf("isxdigit = %d\n", isxdigit('F'));//判断是否为十六进制字符
// printf("tolower = %c\n", tolower('A'));//把大写字母转换成小写字母
// printf("toupper = %c\n", toupper('a'));//把小写字母转换成大写字母
// printf("digittoint = %d\n", digittoint('f'));//把十六进制字符转换成整型
// return 0;
//}
//字符串
//"hello world"
//1.字符串中的每一个字符占1个字节
//2.字符串必须用""包含
//3.字符串的末尾必须要有'\0'
//4.打印字符串用%s占位符,只需要传递字符串的首地址
//5.字符串可以用字符数组存储或者存储在堆内存中
//int main(int argc,const char *argv[])
//{
// char str[]="hello world";//省约数组的长度 必须初始化数组
// printf("size = %lu\n", sizeof(str));
// printf("%s\n", str);
// return 0;
//}
//int main(int argc, const char *argv[])
//{
// char str1[]="hello world";
// char *str2 ="hello world";
//
// str1[5]='A';
// //*(str2+5) = 'A';//str2指针指向字符串常量, 不能修改字符串常量
// printf("str1 = %s\n", str1);
// printf("str2 = %s\n", str2);
// return 0;
//}
//字符串的长度(字符串的有效长度,有效长度不包含'\0')
//"hello world"
#include <
string.h>
//unsigned long <==> size_t
//size_t strlen(const char *src);
size_t mystrlen(const char *
src)
{
int i=
0;
while (src[i]) {
i++
;
}
return i;
}
//int main(int argc,const char *argv[])
//{
// char str1[]="hello world";
//
// printf("size = %lu\n", sizeof(str1));
//
// printf("length = %lu\n", mystrlen(str1));
//
// return 0;
//}
//字符串拷贝函数
//char *strcpy(char *dest, const char *src);
//注意:dest指针指向的内存空间足够容纳src字符串
//char *strncpy(char *dest, const char *src, size_t n);
//dest:目的缓冲区
//src: 源字符串
//n: 最多拷贝的字符个数
char *mystrcpy(
char *dest,
const char *
src)
{
int i=
0;
while (src[i]) {
dest[i]=
src[i];
i++
;
}
dest[i]=
'\0';
return dest;
}
//int main(int argc,const char *argv[])
//{
// char *str1="hello worldqianfeng";
// char str2[100]={};
//
// //printf("str2 = %s\n",mystrcpy(str2, str1));
// //printf("str2 = %s\n", str2);
// printf("str2 = %s\n", strncpy(str2, str1, 100));
// return 0;
//}
//字符查找函数
//strchr 正序查找字符, 返回在字符在源字符串中第一次出现的位置(地址)
//char *strchr(const char *src, int c);
//strrchr 倒序查找字符, 返回在字符在源字符串中第一次出现的位置(地址)
//char *strrchr(const char *src, int c);
char *mystrchr(
const char *src,
char ch)
{
int i=
0;
while (*(src+
i)) {
if (*(src+i)==
ch) {
return (
char *)(src+
i);
}
i++
;
}
return NULL;
}
//int main(int argc,const char *argv[])
//{
// char *str="hello world";
//
// printf("%s\n", mystrchr(str, 'o'));
//
// printf("%s\n", strrchr(str, 'o'));
// return 0;
//}
//字符串比较函数
//strcmp
//int strcmp(const char *, const char *);
//strncmp
//int strncmp(const char *s1, const char *s2, size_t n);
//n: 最大比较字符个数
//ret > 0 str1 > str2
//ret < 0 str1 < str2
//ret ==0 str1 == str2
int mystrcmp(
const char *str1,
const char *
str2)
{
int i=
0;
while (str1[i] && str2[i] && str1[i]==
str2[i]) {
i++
;
}
return str1[i]-
str2[i];
}
//int main(int argc,const char *argv[])
//{
// char *str1="hello world";
// char *str2="hello world";
//
// printf("ret = %d\n", mystrcmp(str1, str2));
//
// printf("ret = %d\n", strncmp(str1, str2, 20));
// return 0;
//}
//字符串拼接函数
//strcat
//char *strcat(char *s1, const char *s2);
//strncat
//char *strncat(char *s1, const char *s2, size_t n);
//n: 最多可以往s1中拷贝的字符个数
char *mystrcat(
char *s1,
const char *
s2)
{
int len = (
int)strlen(s1);
int i=
0;
while (*(s2+
i)) {
*(s1+len+i)=*(s2+
i);
i++
;
}
*(s1+len+i) =
'\0';
return s1;
}
//int main(int argc,const char *argv[])
//{
// char str1[100]="helloworld";
// char str2[]="qianfeng";
//
// str1[18]='#';
//
//// printf("str = %s\n", mystrcat(str1, str2));
////
//// printf("char = %c", str1[18]);
//
// printf("str = %s", strncat(str1, str2, 89));
//
// return 0;
//}
//
//字符串分割函数
//strtok
//char *strtok(char *src, const char *demi);
//src : 被分割的字符串
//demi: 分割符字符串 一定要用双引号包含
//int main(int argc,const char *argv[])
//{
// char str[100]="hello world* qian #:feng";
//
//// char *pstr = strtok(str, " ");
//// printf("pstr = %s\n", pstr);
////
//// pstr = strtok(NULL, "* ");
//// printf("pstr = %s\n", pstr);
//
// char *pstr= str;
// while ((pstr = strtok(pstr, "# *:"))) {
// printf("pstr = %s\n", pstr);
// pstr= NULL;
// }
// //printf("pstr = %s\n", pstr);
//
// return 0;
//}
//查找子串函数
//char *strstr(const char *src, const char *substr);
//int main(int argc,const char *argv[])
//{
// char *src = "helloworldqianfeng";
//
// printf("str = %s\n", strstr(src, "world"));
//
// return 0;
//}
//输入两个字符串,以第二个字符串整体作为分割条件把第一个字符串进行分割,然后输出分割之后的单词。
//比如:
//输入:
//Hi#@welcome#@to#@qianfeng
//#@
//输出:
//Hi
//welcome
//to
//qianfeng
//Hi#@wel@come#@to#@qian#feng
//Hi
//wei@come
//to
//qian#feng
//int main(int argc,const char *argv[])
//{
// char src[100]={};
// char substr[50]={};
// scanf("%s%s", src, substr);
// char *p,*q;
// p = q = src;
//
// int len = (int)strlen(substr);
// while ((p= strstr(p, substr))) {
// *p = '\0';
// printf("%s\n", q);
// p+=len;
// q = p;
// }
// if (*q) {
// printf("%s\n",q);
// }
// return 0;
//}
//sprintf
//int sprintf(char * , const char * , ...)
//格式化往字符缓冲区中写入字符串
//sscanf
//int sscanf(const char * , const char * , ...)
int main(
int argc,
const char *
argv[])
{
char buf[
100]=
{};
int a=
100;
float f=
3.14;
int ret = sprintf(buf,
"###%d***%.2f$$$",a,f);
printf("buf = %s\n", buf);
printf("ret = %d\n", ret);
char *src =
"#34@5.46*";
int b;
float f2;
ret = sscanf(src,
"#%d@%f*",&b, &
f2);
printf("b = %d f2 = %.2f\n", b, f2);
printf("ret = %d\n", ret);
return 0;
}
转载于:https://www.cnblogs.com/0515offer/p/4554997.html
转载请注明原文地址: https://win8.8miu.com/read-1541561.html