字符串的使用

1.字符串常量
 char *name="sjsj";
系统分配内存 字长+1 要加'\0'
2.
 char *address=NULL;
 address=(char *)malloc(10*sizeof(char));
 if(address==NULL){
 exit(EXIT_FAILURE);
 }
 scanf("%s",address);碰见空格默认结束
 //realloc重新分配内存空间 将原来的内存中的内容复制 然后在其后加内存(用于内存不够时)
 address=(char *)realloc(address, 12*sizeof(char));
 if(address==NULL){
 exit(EXIT_FAILURE);
 }
 
 //只要是malloc realloc 分配内存空间 必须手动释放
 free(address);
 数组和指针的区别:
 1.定义数组 系统会自动为这个数组分配内存空间
 2.指针方式 需要自己手动申请内存空间 malloc realloc calloc
 需要自己去释放内存 free
 数组和指针可以相互使用
 */
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int length(char*a,int n);
int main(int argc, const char * argv[]) {
    
    int count = 1;
    char *string = NULL;
  string=  (char*)malloc(1*sizeof(char));
    if (string == NULL) {
        exit(EXIT_FAILURE);
    }
    printf("请输入:\n");
    
    while(1){
        char c = getchar();
        //判断是否结束
        if (c == '\n') {
            string[count-1]='\0';
            break;
        }
       string= realloc(string, count+1);
        if (string == NULL) {
            free(string);
            exit(EXIT_FAILURE);
        }
        string[count -1] = c;
        
        count++;
    }
    
 int m=   length(string,count);
    printf("%d",m);
    return 0;
}
// i am a student
int length(char*a,int n)
{
    int number = 0;
    bool start = false;//单词状态 开始或结束
    for(int i = 0;a[ i ]!='\0';i++)
    {
        char c=a[ i ];
        if ((c >='a'&&c<='z')||(c<='Z'&&c>='A')) {
            if (start == false) {
                number++;
                start =true;
        }
        }else{
            if (start == true) {
                start = false;
            }
        }
    }
    return number;
}

 

posted @ 2018-12-21 23:17  kinghyt  阅读(118)  评论(0编辑  收藏  举报