一  字符串  
  1 字符串 是位于双引号中的字符序列 在内存中以“\0”结束,所占字节比四级多一个 
  2  注意点 可以吧一个字符常量赋值给一个字符变量,但不能把字符串常量赋值给字符变量 C语言中没有字符串变量 可以用字符数组来存放变量 
二 
字符数组  
1 用来存放字符量的数组  
2 字符数组定义 char 数组名[变量表达式]  李二 char c[5]; 
也可以是二维或多维数组   char 数组名[常量表达式][变量表达式] 
定义字符数组时,应该确保数组长度比字符串长度至少多1 
3 字符数组初始化  
 可以在定义时初始化 
  char c[10]={'c', ' ', 'p', 'r', 'o', 'g', 'r', 'a','m'};  字符数组和其他的整形数组一样,当我们一旦给数组部分初始化了 
       剩下没有初始化的部分也都是0  以%s格式进行输入的时候,输入的时候,不能输入空格 
 如果输入了空格,认为此次输入结束,scanf退出 
 4 字符数组引用也是通过下标引用 
  5  访问方式  
   1)访问单个字符 
         printf("%c",c[0]); 
    2)以字符串的形式输出 
         char c[5]="asbc"; 
         printf("%s",c); 
  
 6 存储原理 
    字符数组在内存中存储的原理 
      1)计算机分配连续的内存空间 
      2)字符串的第一个字符存放到地地址中 
      3)字符数组的每一个字符占用1个字节 
       char c1[6]; 
      int len = sizeof(c1)/sizeof(char); 
              = sizeof(c1); 
 
    小练习  
 查询某个字符在字符串中首次出现的位置 
int getCharIndex(char c1[],char c){ 
 
 
    int i=0; 
    while (c1[i]!='\0') { 
         
        if (c1[i]==c) { 
            return i; 
        } 
        i++; 
    } 
 
    return -1; 
} 
 
int main(int argc, const char * argv[]) 
{ 
 
    //定义一个数组 
    char c[]="asfakfasdfasf"; 
    int index = getCharIndex(c,'k'); 
    printf("%d\n",index); 
     
    return 0; 
} 
三  
常见的字符串函数 
1、puts()  输出的函数,输出内容到输出的缓冲区 
    printf("Hello, World!\n"); 
    fflush(stdout);  //强制刷新缓冲区 
    puts可以帮我们自动换行 
    puts("hello world!"); 
     char ch[]="asdfasfasfasf"; 
    puts(ch); 
    puts的缺点是不能格式化输出 
     
     
    2、gets() 获取用户从键盘上输入的内容 
    优点:可以从键盘接收含空格的字符串 
    注意:warning: this program uses gets(), which is unsafe. 
    gets()是不安全的 
    char ch3[10];//当输入的内容超出了数组的长度,gets()会在数组中放10个字符,但是没有'\0' 
    char ch1[10]; 
    获取内容,从键盘上 
    gets(ch1); 
    输出内容 
    puts(ch1); 
     
     
    3、strcat 字符串连接函数 
    char oldStr[40]="welcome to "; 
    char newStr[10]; 
    gets(newStr); //接收用户输入的内容 
    把newStr连接到oldStr最后,newStr会覆盖oldStr的'\0' 
   strcat(oldStr,newStr); //进行字符串的连接 
    puts(oldStr); 
     
    4、strcpy 字符串的拷贝函数 
    char oldStr[40]="welcome to "; 
   char newStr[10]; 
    gets(newStr); 
    把newStr的内容拷贝到oldStr中,会覆盖oldStr中的内容 
    strcpy(oldStr,newStr); 
    puts(oldStr); 
     
    5、strcmp 字符串的比较函数 
     
    char oldStr[10]="abcde"; 
    char newStr[10]; 
    strcmp(oldStr,newStr) 逐个比较字符的ascii码值 
    返回值>0 表示oldStr>newStr 
    返回值<0 表示oldStr<newStr 
    返回值=0 表示oldStr==newStr 
     
     
    gets(newStr); 
    if (strcmp(oldStr,newStr)>0) { 
        puts("你输入的字符串小了"); 
   }else if(strcmp(oldStr,newStr)<0){ 
     
        puts("你输入的字符串大了"); 
    }else{ 
       
        puts("相等"); 
     
    } 
 |