字符串数组与练习

来源:互联网 发布:哪款录屏软件好用 编辑:程序博客网 时间:2024/06/05 15:42

字符串数组

#include <stdio.h>


int test()
{
//   1、char类型的二维数组
    char map[3][3] = {
      "oo",
      "xx"
    };
//  2、char类型的指针数组
    char *name = "zbz";
    
     char * m[3] = {
        "oo",
        "xx"
    };
    printf("%c\n",*m[1]);
//    *m[1] = 'O';
    
    
    
    return 0;

}

//写个函数计算字符串长度
//第一种方式
int myStrlen(const char *str)
{
    int len = 0;
    for (int i = 0; str[i] != '\0'; i++) {
        len++;
    }
    return len;
}


//第二种方式
int myStrlen2(const char *str)
{
    int len = 0;
    for (;str[len] != '\0'; len++);
    return len;
}


//第三种方式
int myStrlen3(const char *str)
{
    int len = 0;
    for (; str[len++] != '\0';);
    return len - 1;
}
//第四种方式
int myStrlen4(const char *str)
{
    int len = -1;
    for (; str[++len];) ;
    return len;
}
//第五种方式
int myStrlen5(const char *str)
{
    int len = -1;
    while (str[++len]);
    return len;
}
//第六种方式
int myStrlen6(const char *str)
{
    const char *start = str;
    while (*(str++) != '\0');
    return (int)(str - start - 1);
}

int test2()
{
    char *name = "";
    int len =  myStrlen6(name);
    printf("%d\n",len);
    return 0;
}



#include <string.h>
//写一个函数,把字符串反转
void reverseString(char *str)
{
//  获取字符串长度
    size_t len = strlen(str);
//  定义指针指向字符串末尾(\0前面的那个字符)
    char *end = str + len - 1;
    
    while (str < end) {
        char temp = *str;
        *str = *end;
        *end = temp;
       
        str++;
        end--;
    }
}




int main()
{

char name[] = "abcd";
        reverseString(name);
        printf("%s\n",name);
        return 0;
}

int test3( )
{
    printf("%s\n","abc");
    char *name = "zbz";
//  puts输出一个字符串,自动换行
    puts(name);
    
    char names[10];
//  1、不能读取空格
//    scanf("%9s",names);
//    printf("%s\n",names);
//  最危险
//  可以读取空格,但是它很容造成数组越界
//    gets(names);
//  1、可以读取空格
//  2、根据数组长度来动态的处理
    fgets(names, sizeof(names), stdin);
    puts(names);
    
//  不会换行
    fputs(names, stdout);

0 0
原创粉丝点击