
#include <stdio.h>
#include <stdlib.h>
int main()
{
char a[]={'H','e','l','l','o'}; //定义了一个字符数组
char b[]={'H','e','l','l','o','\0'}; //定义了一个字符串
//字符串以\0结尾,字符串不包含\0
char *str="wo is liming"; //字符串变量 ,这种方式是不能修改的,用指针方式时,字符串放到了常量区(const)
char *str1="wo is liming"; //str的地址和str1的地址是一样的
char word[]="world"; //字符串变量,这种方式可以修改
char line[10]="hello"; //字符串变量
//需要6个字节空间,因为结尾有\0
word[0]='B'; //修改某字符
char *str2;
str2=str; //传址
printf("%s\n",word); //输出一个单词
return 0;
}
char a[] = "liming";
a = "lm";//不能这样修改值,a是const
char s[50];
strcpy(s,"liming"); //给字符串赋值
char aa[3][5]; //字符数组
char a[][5] ={{'1','2','3','4'},{'a','b','c','d','\0'}};//字符数组
printf("%s\n",a[1]);
char *b[]={"12345","abcde"}; //每个b[n]就是一个 char *
printf("%s\n",b[0]);
#include <stdio.h>
int main ()
{
int ch=getchar();//从标准输入stdin(控制台)获取一个字符(一个无符号字符)
//需要include <stdio.h>
//返回值:字符的ASCii码
//如果到达文件末尾或发生读错误,则返回 EOF=-1
//对于win系统 CTRL+Z=EOF
printf("%d\n",ch);
int x=putchar(ch); //把参数char指定的字符(一个无符号字符)写入到标准输出stdout(控制台)中
//需要include <stdio.h>
//参数:可以是字符,也可以是字符的ASCii码
//返回值:ASCii码;如果发生错误则返回 EOF=-1
printf("%d\n",x);
return(0);
}
//需要 #include <string.h>
char str[50]="wo is 李明";
int len;
len = strlen(str); //计算字符串str的长度(字节),直到空结束字符,但不包括空结束字符
//因为C语言是ANSI编码----一个汉字是两个字节
printf("|%s| 的长度是 |%d|\n", str, len);
#include <stdio.h>
#include <string.h>
int main ()
{
//需要 #include <string.h>
char str1[50]="wo is liming";
char str2[15]="AB CD";
char *str3;
int x = strcmp(str1, str2); //比较两个字符串
//如果返回值小于 0,则表示 str1 小于 str2。
//如果返回值大于 0,则表示 str1 大于 str2。
//如果返回值等于 0,则表示 str1 等于 str2
//区分大小写
int y = strncmp(str1, str2,3);
//参数3:比较前n个
//区分大小写
char s1[10]="liming";
char s2[10]="liMing";
int z = strcasecmp(s1, s2);//比较两个字符串
//忽略大小写
printf("%d",z);
return(0);
}
char str1[50]="wo is liming";
char str2[15]="AB CD";
char *str3;
//str3=strcpy(str1, str2); //字符串复制
//把str2复制到str1,包括结尾的\0
//str1的空间要大于等于str2 ,两个空间不能有重叠
//返回值:指向str1的指针 str3=str1
//这个语句是不安全的
int len1=strlen(str1);
int len2=strlen(str2);
str3=strncpy(str1, str2,len1-len2); //这个语句是安全的
int i=strlen(str1) ;
for(int x=0;x<i;x++){
printf("%c",str1[x]);
}
printf("%p\n",str1);
printf("%p\n",str3);
char str1[50]="wo is liming";
char str2[15]="AB CD";
char *str3;
//str3=strcat(str1, str2); //把src2所指向的字符串追加到str1所指向的字符串的结尾
//str1的空间要大于等于str2+str1
//返回值:指向str1的指针 str3=str1
//这个语句是不安全的
int len1=strlen(str1);
int len2=strlen(str2);
str3=strncat(str1, str2,len1-len2); //这个语句是安全的
//参数3:最多追加的字符数
int i=strlen(str1) ;
for(int x=0;x<i;x++){
printf("%c",str1[x]);
}
printf("%p\n",str1);
printf("%p\n",str3);
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main ()
{
char str[50]="wo is liming,wosijiaosi";
const char ch = 'i';
char *ret;
ret = strchr(str, ch);//在字符串str中搜索第一次出现字符ch的位置,--从左往右找
//返回值:找到的指针,如果未找到该字符则返回 NULL
printf("%p\n",ret);
printf("%p\n",str);
printf("%d\n",ret-str);// 找到位置的索引号
printf("%s\n",ret); //找到位置开始往后的字符串
//is liming,wosijiaosi
//ret = strchr(ret+1, ch); //寻找第二个字符
char *t=(char *)malloc(strlen(ret)+1);
strcpy(t, ret); //找到位置开始往后的字符串复制到t
printf("%s\n",t);
free(t);
ret = strrchr(str, ch);//在str字符串中搜索最后一次出现字符ch(一个无符号字符)的位置
//返回值:找到的指针,如果未找到该字符则返回 NULL
printf("%p\n",ret);
printf("%p\n",str);
printf("%d\n",ret-str);
return(0);
}
#include <stdio.h>
#include <string.h>
int main ()
{
char s1[50]="wo is liming,wosijiaosi";
char s2[50]="liming";
char s3[50]="liMing";
char *p=strstr(s1, s2);//在字符串s1中查找第一次出现字符串s2的位置,不包含终止符
//返回值:找到位置的指针,如果未找到则返回 null
//区分大小写
//char *pp=strcasestr(s1, s3); //忽略大小写 ??????
printf("%s",pp);
return(0);
}
#include <stdio.h>
int main()
{
char str[80];
sprintf(str, "Pi 的值 = %f", 3.141593); //格式化字符串
//参数1:str -- 字符数组的指针
//参数2:要被写入到字符串 str 的文本
printf("%s\n",str);
return(0);
}
