c二维数组和字符数组及字符数组常用函数
#include <stdio.h> #include <stdlib.h> #define M 2 #define N 3 int main(){ // int a[M][N]={{1,2,3},{4,5,6}}; // int a[M][N]={{1,2},{4}}; // int a[M][N]={1,2,3,4,5,6}; int a[][N]={1,2,3,4,5,6}; int i,j; printf("a =%p\n",a); printf("a+1 =%p\n",a+1); printf("a[1]=%p\n",a[1]); for(i=0;i<M;i++){ for(j=0;j<N;j++){ printf("%p-->%d \n",&a[i][j],a[i][j] ); } printf("\n"); } } ------------------------------------------------------- a =0x7fffda206b90 a+1 =0x7fffda206b9c //相对a移动了N个位置 a[1]=0x7fffda206b9c 0x7fffda206b90-->1 0x7fffda206b94-->2 0x7fffda206b98-->3 0x7fffda206b9c-->4 0x7fffda206ba0-->5 0x7fffda206ba4-->6
字符数组
1.定义,初始化,存储特点
存储类型 数据类型 标识符 [下标] ......
单个字符初始化
字符串常量初始化
以\0作为结束符号
#include <stdio.h> #include <stdlib.h> #define N 32 int main(){ char str[N],str1[N],str2[N]; scanf("%s%s%s",str,str1,str2); printf("%s\n%s\n%s\n",str,str1,str2); }
string.h里
strlen sizeof
strcpy strncpy
strcat strncat
strcmp strncmp
strlen 计算字符串不包含\0的长度
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(){ char str[]="hello"; char str1[]="hello\0abc"; printf("strlen(%s)=%d\n",str,strlen(str));//strlen(hello)=5 printf("sizeof(%s)=%d\n",str,sizeof(str));//strlen(hello)=6 printf("strlen(%s)=%d\n",str1,strlen(str1));//strlen(hello)=5 printf("sizeof(%s)=%d\n",str1,sizeof(str1));//strlen(hello)=10 }
strcpy 拷贝一个串到另外一个
strncpy 带长度的拷贝
char *strcpy(char *dest, const char *src);
char *strncpy(char *dest, const char *src, size_t n);
int main(){ char str[]="hello"; char str1[]="hello"; strcpy(str,"abcdefg"); //越界 puts(str); //abcdefg strncpy(str1,"abcdefg",strlen(str1));//abcde puts(str1); }
char *strcat(char *dest, const char *src);
char *strncat(char *dest, const char *src, size_t n);
int main(){ char str[N]; char str1[N]; strcat(str,"abcdef"); //不能保证str的空间够,易导致越界 strncat(str1,"abcdef",N); puts(str);//abcdef puts(str1);//abcde }
ascii码比较
int strcmp(const char *s1, const char *s2);
int strncmp(const char *s1, const char *s2, size_t n);
返回ascii差值
#define N 5 int main(){ char str[N]="abcd"; char str1[N]="abc"; printf("%d\n",strcmp(str,str1)); //100 printf("%d\n",strncmp(str,str1,3)); //0 }
输入的字符计算单词个数
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(){ char str[128]; int i; int prev_in_world=0; gets(str); int count=0; for(i=0;str[i] != '\0';i++){ //空格或者tab if(str[i] == 32 || str[i] == 9 ){ prev_in_world=0; }else{ if(prev_in_world == 0){ count++; prev_in_world=1; } } } printf("count(%s)=%d\n",str,count ); }

浙公网安备 33010602011771号