精华内容
下载资源
问答
  • C语言字符串赋值的方法

    千次阅读 多人点赞 2020-09-13 10:57:40
    C语言中,常见的3种字符串赋值有如下: 1、通过字符数组直接初始化 int main() { char str[10] = "China";//还可以写成char str[10] ;str[10] = "China"; printf("str = %s", &str); return 0; } 但是,直接...

    首先,C语言没有向C++,Java,python等面向对象的语言中string这样的字符串类型,C语言中的字符串是存放在字符型数组中的

    C语言中,常见的3种字符串赋值有如下:

    1、通过字符数组直接初始化

    int main()
    {
    	char str[10] = "China";//还可以写成char str[10] ;str[10] = "China";
    	printf("str = %s", &str);
    	return 0;
    }
    

    但是,直接把数组元素赋值给数组名(也就是数组首元素的地址),是不行的

    int main()
    {
    	char str[10] ;
    	str  = "China";
    	printf("str = %s", str);
    	return 0;
    }
    

    这样会出现编译错误:C2106(运算符的左操作数必须为左值)

    2、使用strcpy函数进行初始化

    int main()
    {
    	char str1[10],str2[] = "China";
    	strcpy(str1, str2);//此行代码还可以写为 strcpy(str1,"China");
    	printf("str1 = %s", str1);
    	return 0;
    }
    

    这里需要注意的是,使用strcpy函数,strcpy(str1,str2),字符数组1必须定义的足够大,以便容纳被复制的字符串2,避免数组越界。

    以下写法是错误的

    char str1[10],str2 = "China";
    str1 = str2;
    

    注:
    在C语言中,将一个字符串赋值给另一个字符串,只能使用strcpy函数

    但是,可以使用赋值号实现对单个字符的赋值

    如:

    char str1[10];;
    str1[0] = 'A';
    str1[1] = 'B';
    str1[2] = '\0';
    

    这里需要注意的是,结束后一定要自行添加 ‘\0’
    否则,就会出现” AB烫烫烫烫烫烫烫 ]D痨“的编译结果

    3、通过指针赋值

    通过指针赋值字符串相对比较难理解,大家先看一段代码

    #define _CRT_SECURE_NO_WARNINGS//在VS2019下可以加,否则会出现C4996问题
    #include <stdio.h>
    int main()
    {
    	char* string = "I Love China";
    	printf("string  = %s", string);
    	return 0;
    }
    

    如何理解这段代码:
    ①程序定义了一个char *类型的指针变量(字符指针变量)string,在C语言中,指针 = 地址,顾名思义,指针变量存放着地址
    ②字符串常量"I Love China",C语言在处理字符串常量是按字符数组来处理的。
    ③结合上两点可以知道,该字符指针存放的是字符常量第一个元素的地址
    因此,输出时,只需告诉编译器字符常量首元素的地址即可

    char* string = "I Love China";
    

    还可以写为:

    char * string;
    string = "I Love China";//不可以写为*string = "I Love China";
    

    不可以写为:
    *string = “I Love China”;

    因为,字符串常量在C语言中是按字符数组来存储的,string 存储地址


    另外,在谈谈字符串的输出;

    char str[10] = "China";
    printf("str = %s", str);
    

    而,整型数组的输出确是需要用到for循环

    展开全文
  • python中的语句:赋值语句if语句,当条件成立时运行语句块。经常与else, elif(相当于else if)配合使用。for语句,遍列列表、字符串、字典、集合等迭代器,依次处理迭代器中的每个元素。while语句,当条件为真时,...

    python中的语句:

    赋值语句

    if语句,当条件成立时运行语句块。经常与else, elif(相当于else if)配合使用。

    for语句,遍列列表、字符串、字典、集合等迭代器,依次处理迭代器中的每个元素。

    while语句,当条件为真时,循环运行语句块。

    try语句。与except, finally, else配合使用处理在程序运行中出现的异常情况。

    class语句。用于定义类型。

    def语句。用于定义函数和类型的方法。

    pass语句。表示此行为空,不运行任何操作。

    assert语句。用于程序调适阶段时测试运行条件是否满足。

    with语句。Python2.6以后定义的语法,在一个场景中运行语句块。比如,运行语句块前加锁,然后在语句块运行退出后释放锁。

    yield语句。在迭代器函数内使用,用于返回一个元素。

    raise语句。抛出一个异常。

    import语句。导入一个模块或包。常用写法:from module import name, import module as name, from module import name as anothername

    特别说明,以上划分也不是很严格,有的内容,有的朋友不认为属于语句。这没关系,反正就是那个东西,在编程中使用。不纠结于名词归类上。总之这些都是要掌握的,才能顺利编程呢。

    赋值语句

    实例:

    >>> hiekay = 1

    >>> python = 2

    >>> x, y = hiekay, python #相当于x=hiekay,y=python

    >>> x

    1

    >>> y

    2

    >>> x, y #输出的是tuple

    (1, 2)

    >>> [x, y] #这就是一个list

    [1, 2]

    >>> [a, b] = [hiekay, python]

    >>> a

    1

    >>> b

    2

    >>> a, b

    (1, 2)

    >>> [a, b]

    [1, 2]

    换一种方式,以上两种赋值方法交叉组合一下:

    >>> [c, d] = hiekay, python

    >>> c

    1

    >>> d

    2

    >>> c, d

    (1, 2)

    >>> f, g = [hiekay, python]

    >>> f

    1

    >>> g

    2

    >>> f, g

    (1, 2)

    居然也行。其实,赋值,就是对应着将左边的变量和右边的对象关联起来。

    有这样一个有趣的问题,如果a=3,b=4,想把这两个变量的值调换一下,也就是a=4,b=3。在有的高级语言中,是要先引入另外一个变量c做为中间变量:

    a = 3

    b = 4

    c = a #即c=3

    a = b #a=4

    b = c #b=3

    python 更牛逼,不需要中间变量:

    >>> hiekay = 100

    >>> python = 200

    >>> hiekay, python = python, hiekay

    >>> hiekay

    200

    >>> python

    100

    神奇吧。

    序列赋值

    其实上面实验的赋值,本质上就是序列赋值。如果左边的变量是序列,右边的对象也是序列,两者将一一对应地进行赋值。

    >>> [a, b, c] = (1, 2, 3) #左右序列一一对应,左边是变量,右边是对象

    >>> a

    1

    >>> b

    2

    >>> c

    3

    >>> (a,b,c) = [1,2,3]

    >>> a

    1

    >>> b

    2

    >>> c

    3

    >>> [a,b,c] = "kay" #不要忘记了,str也是序列类型的数据

    >>> a

    "k"

    >>> b

    "a"

    >>> c

    "y"

    >>> (a,b,c) = "kay"

    >>> a,c

    ("k", "y")

    >>> a,b,c = "kay" #与前面等价

    >>> a,b

    ("k", "a")

    >>> a,b = "kay" #报错了,因为左边和右边不是一一对应

    Traceback (most recent call last):

    File "", line 1, in

    ValueError: too many values to unpack

    >>> (a,b),c = "hi","kay" #注意观察,这样的像是是如何对应的

    >>> a,b,c

    ("h", "i", "kay")

    >>> string = "hiekay"

    >>> a,b,c = string[0],string[1],string[2] #取切片也一样

    >>> a,b,c

    ("h", "i", "e")

    >>> (a,b),c = string[:2],string[2:]

    >>> a,b,c

    ("h", "i", "ekay")

    总结: 变量与值 一一对应 .

    展开全文
  • ruby下简单的字符串赋值测试

    千次阅读 2012-03-01 22:05:12
    由于今天要做一个大批量数据的遍历工作,其中有一个代码要执行一条字符串赋值语句,类似于这样的语句: str = "#{title}#{id}" # case 1 犹豫着是要用写这以上的方法(比较习惯的做法),还是写成以下方法好点:...

    由于今天要做一个大批量数据的遍历工作,其中有一个代码要执行一条字符串赋值语句,类似于这样的语句:

    str = "#{title}#{id}"   # case 1

    犹豫着是要用写这以上的方法(比较习惯的做法),还是写成以下方法好点:

    str = title + id        # case 2

    说明:

     用case 1不会出现转型报错的现象,会直接把非字符串,如int, float转化成字符串再输出

     用case 2则有时会报类型不匹配的错误,比如id若是int类型,会报错.


    果断做了个测试,结果出来了.

    环境:


        OS: win7, 64bit
        cpu: 4 core, 8 thread cpu


    代码:

    @@name = "the name"
    
    def single_str(len)
      i = 0
      while(i < len) do
        j = i.to_s
        str = j
        i += 1
      end
    end
    
    def join_strs(len)
      i = 0
      while(i < len) do
        j = i.to_s
        str = "#{@@name}#{j}"
        i += 1
      end
    end
    
    def add_strs(len)
      i = 0
      while(i < len) do
        j = i.to_s
        str = @@name + j
        i += 1
      end
    end
    
    
    require 'benchmark'
    Benchmark.bm do |x|
      len = 1000*1000*1   # case: 1,10,100
      x.report("single_strs(#{len}):") { single_str(len) }
      x.report("join_strs(#{len}):") { join_strs(len) }
      x.report("add_strs") { add_strs(len) }
    end

    结果:

    (1000*1000*1)
                               user     system      total        real
    single_strs(1000000) :  0.218000   0.000000   0.218000 (  0.208012)
    join_strs(1000000)   :  0.608000   0.000000   0.608000 (  0.607035)
    add_strs(1000000)    :  0.468000   0.000000   0.468000 (  0.477027)

    (1000*1000*10)
                                user     system      total        real
    single_strs(10000000) :  2.169000   0.000000   2.169000 (  2.169124)
    join_strs(10000000)   :  6.177000   0.000000   6.177000 (  6.174353)
    add_strs(10000000)    :  4.852000   0.000000   4.852000 (  4.858278)

    (1000*1000*100)
                               user     system      total        real
    single_strs(100000000): 22.464000   0.000000  22.464000 ( 22.460284)
    join_strs(100000000)  : 62.635000   0.031000  62.666000 ( 62.688586)
    add_strs(100000000)   : 49.624000   0.000000  49.624000 ( 49.653840)



    答案很明显了,字符串相加的方式还是比较有优势,所以情况允许的话,还是少用一下用打印的方式进行字符串结合.

    展开全文
  • C语言字符串赋值给数组/char *

    千次阅读 2021-01-27 19:22:20
    字符串(c语言): 以“abcd”为例,解释...1. 字符串赋值给char * int main(int argc, const char *argv[]) { char *p1 = "hello"; printf("p1[0] = %c\n", *p1); printf("%s\n", p1); char *p2 = NULL; ...

    字符串(c语言):

    以“abcd”为例,解释如下:

    1. 申请了空间(在常量区),存放了字符串 
    2. 在字符串尾加上了'/0'    
    3. 返回地址

    一定记清楚!!

     

    1. 字符串赋值给char *  

    int main(int argc, const char *argv[])
    {
        char *p1 = "hello";
        printf("p1[0] = %c\n", *p1);
        printf("%s\n", p1);
    
        char *p2 = NULL;
        p2 = "world";
        printf("p2[0] = %c\n", *p2);
        printf("%s\n", p2);
    
        return 0;
    }

    小结:以下两种形式赋值效果相同

     

    char *p1 = "hello";

     

     char *p2 = NULL;

     p2 = "world";


    2. 字符串赋值给数组

    1) 字符串赋值给定长数组

    int main(int argc, const char *argv[])
    {
        char p1[10] = "hello";
        printf("%s", p1);
    
        return 0;
    }
    
    /* 结果输出:
    
    hello
    
    */
    int main(int argc, const char *argv[])
    {
        char p2[10];
        p2 = "hello";
    
        return 0;
    }
    
    /*
    ../src/demon.c: In function 'main':
    ../src/demon.c:46:8: error: assignment to expression with array type
       46 |     p2 = "hello";
          |        ^
    ../src/demon.c:45:10: warning: variable 'p2' set but not used [-Wunused-but-set-variable]
       45 |     char p2[10];
          |          ^~
    */

    小结:以下两种形式不同

     

    char p1[10] = "hello";

     

    char p2[10];

    p2 = "hello";

    对于第二种形式的理解: “hello”赋值的值是一个地址,p2是一个常量地址却。因此不能将字符串的地址赋值给一个常量

    2)字符串赋值给未知长度数组

    int main(int argc, const char *argv[])
    {
        char p[] = "hello";
    
        printf("%s", p);
        printf("sizeof(p[]) = %d", (int)sizeof(p));
    
        return 0;
    }
    
    /*结果输出:
    > Executing task: .\bin\demon.exe <
    
    hello
    sizeof(p[]) = 6
    终端将被任务重用,按任意键关闭。
    */

    char str[] = "hello";
    因为定义的是一个字符数组,所以就相当于定义了一些空间来存放"hello",而又因为字符数组就是把字符一个一个地存放的,所以编译器把这个语句解析为
    char str[6] = {'h','e','l','l','o','\0'};
    

    小结:字符串赋值给不定长度的数组时,sizeof数组计算出来的长度结果中是包含‘\0’的。

    展开全文
  •  对于这个声明方式,会造成的误解是:声明了一个字符指针(它会指向一个位置),将“字符串赋值给 指针表达式"*a"所指向的地址。但正解是:声明了一个字符指针后,并用字符串常量的第一个字符的地址赋值给指针...
  • C语言:字符串赋值的方法

    万次阅读 多人点赞 2015-01-29 10:31:29
    /*给数组赋字符串*/  .  .  .  }  上面程序在编译时, 遇到char s[30]这条语句时, 编译程序会在内存的某处留  出连续30个字节的区域, 并将第一个字节的地址赋给s。当遇到strcpy( strcpy 为  Turbo C...
  • 已知ch是字符型变量,下面正确赋值语句是 A) ch= ‘123’; B) ch= ‘\xff’; C) ch= ‘\08’; D) ch=""; ch=‘123’在编译器上视编bai译严格性可能会du被视为一个zhi警告dao也可能是一个错误内。如果是警告,最终ch...
  • MySQL执行拼接字符串语句实例

    万次阅读 2011-03-02 13:21:00
    -- 以下是一个MySQL执行拼接字符串语句实例: -- 为需要拼接的变量赋值 SET @VARNAME='李'; -- 拼接字符串,其中?是执行拼接字符串语句的参数,@TestName是结果值 SET @SQLStr0=CONCAT('SELECT TestName INTO @...
  • 【多选题】下列运算符的使用正确的有哪些( )【多选题】以下选项中,... print(len(s))【多选题】以下的布尔代数运算正确的是( )【单选题】关于 Python 语句 P = –P,以下选项中描述正确的是________【单选题】下列...
  • python3入门之赋值语句介绍

    千次阅读 2015-08-04 09:55:36
    本节主要介绍赋值语句,以及几种特殊的赋值。下面附有之前的文章;
  •  REPLACE(str,from_str,to_str) 在字符串 str 中所有出现的字符串 from_str 均被 to_str替换,然后返回这个字符串: mysql> SELECT REPLACE('www.mysql.com', 'w', 'Ww'); -> 'WwWwWw.mysql.com' 这个函数是多...
  • 字符指针 赋值

    千次阅读 2014-09-17 22:56:47
    字符串赋值给字符指针(char *a=“hello”)的正确理解方式   对于语句 char *a="hello";  对于这个声明方式,会造成的误解是:声明了一个字符指针(它会指向一个位置),将“字符串”赋值给 指针表达式"*a"所...
  • C字符串数组赋值

    万次阅读 多人点赞 2012-08-09 21:38:59
    1、定义的时候直接用字符串赋值 char a[10]="hello"; 注意:能先定义再给它赋值,如  char a[10];  a[10]="hello"; 这样是错误的! 2、对数组中字符逐个赋值 char a[10]={'h','e','l','l','o'}; 3、利用...
  • python字符串、变量赋值

    千次阅读 2019-03-18 14:52:16
    多个变量赋值 Python允许你同时为多个变量赋值。例如: a, b, c = 1, 2, "john" print a,b,c ... String(字符串) List(列表) Tuple(元组) Dictionary(字典) Python数字 ...
  • 我相信,使用C/C++多年的人对下面这个字符串赋值语句都不会陌生吧。    char* p = "test";   同时,我也相信,各位在使用这种语句后吃过很多苦头也不少吧?只要你想利用指针p来改变字符串的内容,你...
  • 赋值语句 注释,用(--)来表示 定义,lua中没有定义(申明数据类型),它是通过赋值来确定其数据类型的。 赋值,是改变一个变量的值和改变表域的最基本的方法。 a = "hello" .. "world" Lua可以对多个变量同时...
  • 字符数组赋值的方法

    万次阅读 多人点赞 2018-07-06 15:15:07
    main() { char s[30]; strcpy(s, "Good News!"); /*给数组赋字符串*/ . . . } 上面程序在编译时, 遇到char s[30]这条语句时, 编译
  • bash变量赋值字符串的操作

    千次阅读 2018-11-13 09:19:54
    bash变量赋值字符串的操作
  • C++ 字符串与字符数组 详解

    万次阅读 多人点赞 2018-03-03 19:28:22
    在C++中,有两种类型的字符串表示形式: C-风格字符串 C++引入的string类 C-风格字符串 C 风格的字符串起源于 C 语言,并在 C++ 中继续得到支持。字符串实际上是使用 null 字符 ‘\0’ 终止的一维字符数组。...
  • python中的for语句字符串的用法

    万次阅读 2018-09-05 23:17:06
    一、for语句 1、for 循环使用的语法  for 变量 in range(10):  循环需要执行的代码 示例1:for循环范围的确定 range( )是python中产生一个数的集合工具,基本结构为range(start,stop,step),即产生从start数开始...
  • 字符串和数字

    千次阅读 2020-10-23 09:26:16
    然而,许多程序问题需要使用更小的数据单位来解决,比方说字符串和数字。 在这一章中,我们将查看几个用来操作字符串和数字的 shell 功能。shell 提供了各种执行字符串操作的参数展开功能。 除了算术展开(在第七...
  • Python 变量类型变量存储在内存中的值,...变量赋值Python 中的变量赋值不需要类型声明。每个变量在内存中创建,都包括变量的标识,名称和数据这些信息。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建...
  • 【单选题】以下for语句结构中,( )能完成1~10的累加功能【单选题】关于 Python字符串,下列说法错误的是【单选题】Python语句 print(type(12)的输出结果是【单选题】Python语句 print(chr(65)的运行结果是【单选题】...
  • C语言 字符数组赋值的方法 整理

    千次阅读 2015-03-15 18:38:03
    1、定义的时候直接用字符串初始化 char a[10]="hello"; 注意:能先定义再给它赋值,如char a[10]; a[10]="hello";这样是错误的!只有定义初始化是才能这样赋值 2、对数组中字符逐个赋值 char a[10]={'h','e','
  • C语言 字符数组赋值

    千次阅读 2018-05-29 09:24:00
    /给数组赋字符串/ . . . } 上面程序在编译时, 遇到char s[30]这条语句时, 编译程序会在内存的某处留 出连续30个字节的区域, 并将第一个字节的地址赋给s。当遇到strcpy( strcpy 为 Turbo C2.0的函数)时, 首先在目标...
  • 详解 Python 字符串(一):字符串基础

    千次阅读 多人点赞 2021-01-16 20:59:45
    在 Python 中,字符串就是一串字符的组合,它是可变的、有限字符序列,包括可见字符、可见字符(如空格符等)和转义字符。Python 通过 str 类型提供大量方法来操作字符串,如字符串的替换、删除、截取、复制、...
  • 在程序设计中,为了方便处理,...因此按照数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。 本文主要介绍一维数组、二维数组和字符数组,其余的数组将会在以后的文章中介绍到...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 155,240
精华内容 62,096
关键字:

以下不正确的字符串赋值语句是