C-字符串
#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); }