iOS学习(C语言)知识点整理
一、字符串的操作
1)字符串的存储,字符数组,在堆里面申请内存空间。
实例代码:
#include <stdlib.h> #include <string.h> int main(){ char str[100] = "hello world"; char *p = "hello world"; //*p ='H';//常量字符串不可以修改,p指向只读的地址 p = str; *p = 'H'; // printf("%s",str); p = (char*)malloc(100); //判空 if(p==NULL) return 0; //清零 memset(p,0,100); printf("p=%p ",p); //字符串赋值 //memcpy(p, "helloworld", 10);//方法一:内存拷贝 sprintf(p,"%s","helloworld");//方法二:sprintf()输出赋值 //p = "helloworld";//错误,p指向常量区,把申请的内存都丢了 printf("p=%p ",p); printf("%s",p); //释放 free(p); return 0; }
2)字符操作函数, 形参为对应参数的ASCII码值,满足条件返回1,不满足返回0 ; 需要引用头文件#include <ctype.h>
1、int isalnum(int);// 判断是否是数字或者字母
2、int isalpha(int);//判断是否是英文字符
3、int isdigit(int);//判断是否是数字 0~9
4、int islower(int);//判断是否是小写字母
5、int isupper(int);//判断是否是大写字母
6、int isxdigit(int);//是否是16进制数字
7、int tolower(int);//转成小写
8、int toupper(int);//转成大写
9、int digittoint(int);//把十六进制数字字符转换成整型
10、int ishexnumber(int);//等价 isxdigit
11、int isnumber(int);//等价isdigit
实例代码:
1 #include <ctype.h> 2 int main() 3 { 4 printf("%d ",isalnum('1'));//1 5 printf("%d ",isalpha('1'));//0 6 printf("%d ",isdigit('a'));//0 7 printf("%d ",islower('A'));//0 8 printf("%d ",isupper('a'));//0 9 printf("%d ",isxdigit('F')); //1 10 printf("%c ",tolower('A'));//a 11 printf("%c ",toupper('a'));//A 12 printf("%d ",digittoint('1'));//1 13 printf("%d ",ishexnumber('a'));//1 14 printf("%d ",isnumber('a'));//0 15 return 0; 16 }
3)字符串拷贝 使用strcpy或strncpy 后者可以指定拷贝长度。
实例代码:
1 int main() 2 { 3 char str[20] ="XXXXXXXXXXXXXX"; 4 char *p = "hello"; 5 strcpy(str,p);//从p的位置拷贝字符串,把p后面的' '也拷贝过来.如果接收的字符串空 间不够大,可能会越界 。 6 printf("%s ",str);//从str开始,打印到 结束 7 for(int i=0;i<10;i++){ 8 printf("str[%d]=%c=%d ",i,str[i],str[i]); 9 } 10 unsigned long len=strlen(str); 11 strncpy(str,p,len-1);//最后的参数:最大拷贝字符数.一般设置为目的字符串bufsize-1,预留结束符 12 str[len-1] = '