您的位置:首页 > 编程语言 > C语言/C++

【C语言】字符串(main函数参数)

2019-07-04 00:59 59 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/Sudley/article/details/94591396

文章目录

  • 字符串输入输出scanf&printf
  • 字符串数组
  • main函数参数
  • 字符串

    字符数组

    #include <stdio.h>
    
    int main(void)
    {
    char word[]={'H','e','l','l','o',' ','w','o','r','l','d',};
    int i=0;
    int n=sizeof(word)/sizeof(word[0]);
    for (i=0;i<n;i++){
    printf("%c",word[i]);
    }
    printf("\n");
    return 0;
    }

    输出

    字符串定义

    1、以’\0’结束的一串字符;
    2、 0标准字符串的结束,但他不是字符串的一部分;
    3、字符串以数组的形式存在,以数组或指针(更多)的形式访问;
    4、string.h头文件有很多处理字符串的函数。
    字符串变量
    char* str = “Hello”;
    char word[] =“Hello”;
    char word[10] = “Hello”; //加上结尾的’\0’,字符数组的长度是6
    字符串常量
    “Hello”
    两个相邻的字符串常量会被自动连接起来
    "hello "“world” =“hello world”
    不同的定义方法用的地址不一样:
    char* str = “Hello”;相当是const char* str = “Hello”;
    str是一个指向字符串常量的指针(这段地址比较特殊,而且相同字符串的地址相同)
    试图对str所指的字符串做写入会导致严重后果
    如果需要修改字符串,应该用字符数组进行定义
    char str2[] = “Hello”;

    #include <stdio.h>
    
    int main(void)
    {
    int i=0;
    char* str = "Hello";
    char* str1 = "Hello";
    char str2[] = "Hello";
    printf("&i  =%p\n",&i);
    printf("str =%p\n",str);
    printf("str1=%p\n",str1);
    printf("str2=%p\n",str2);
    return 0;
    }

    运行结果

    字符串特点
    以字符数组的形式存在
    不能用±*/运算符进行运算
    通过数组的方式可以遍历字符串
    使用指针还是数组定义字符串?
    char* str = “Hello”
    char word[] = “Hello”
    指针:要处理一个字符串(对字符串只读)
    1、处理参数
    2、malloc动态分配空间
    数组:要构造一个字符串(对字符串读写)
    1、作为本地变量空间,自动被回收

    字符串输入输出scanf&printf

    #include <stdio.h>
    
    int main(void)
    {
    char* str = "Hello";
    char str2[] = "Hello";
    printf("str =%s\n",str);
    printf("str2=%s\n",str2);
    char str3[3];
    char str4[3];
    scanf("%s%s",str3,str4);
    printf("%s##%s\n",str3,str4);
    
    return 0;
    }


    1、scanf输入一个单词(空格、tab或回车为止)
    2、scanf不知道字符大小,上述截图字符超过定义的长度依然正常输入。
    字符串输入应该单独使用一个scanf函数,而且能够设置输入的大小

    #include <stdio.h>
    
    int main(void)
    {
    char str3[3];
    char str4[3];
    scanf("%2s",str3);
    scanf("%s",str4);
    printf("%s##%s\n",str3,str4);
    return 0;
    }


    常见错误
    1、定义了指针变量误以为定义了字符串变量直接使用(运行的时候不一定出错)
    char* str;
    scanf("%s",str);
    2、空字符串
    char str[] = “”; //空字符串,无法存放字符
    char str[10] = “”; //长度是10,str[0] = ‘\0’

    字符串数组

    char **a;
    char a[][];
    二位字符串数组第二维要有固定的大小

    #include <stdio.h>
    
    int main(void)
    {
    char a[][10] = {
    "hello",
    "1234567890",
    };
    printf("%s##\n",a);
    printf("%s##\n",a[1]);
    return 0;
    }

    上面的char a[][10]可以替换为char* a[]输出结果不同,以下是改成char* a输出结果的

    main函数参数

    int main(int argc,char const *argv[])
    argc是参数个数,argv是参数组成的字符串数组
    参考代码

    #include <stdio.h>
    
    int main(int argc,char const *argv[])
    {
    int i;
    for (i=0;i<argc;i++){
    printf("main参数%d:%s\n",i,argv[i]);
    }
    return 0;
    }

    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: 
    相关文章推荐