精华内容
下载资源
问答
  • 字符数组赋值
    2020-12-20 22:09:20

    例如:

    main()

    {

    chars[30];

    strcpy(s,"Good News!"); /*给数组赋字符串*/

    }

    上面程序在编译时,遇到chars[30]这条语句时,编译程序会在内存的某处留出连续30个字节的区域, 并将第一个字节的地址赋给s。当遇到strcpy( strcpy 为TurboC2.0的函数)时, 首先在目标文件的某处建立一个"Good News!\0" 的字符串。其中\0表示字符串终止,终止符是编译时自动加上的,然后一个字符一个字符地复制到s所指的内存区域。因此定义字符串数组时, 其元素个数至少应该比字符串的长度多1。

    注意:

    1.字符串数组不能用"="直接赋值, 即s="Good News!"是不合法的(但是如果是字符串指针型的则可以)。所以应分清字符串数组和字符串指针的不同赋值方法。

    2.对于长字符串, Turbo C2.0允许使用下述方法:

    例如:

    main()

    {

    chars[100];

    strcpy(s,"The writer would like to thank you for"

    "yourinterest in his book. He hopes you"

    "canget some helps from the book.");

    }

    更多相关内容
  • 字符数组赋值的方法

    千次阅读 2021-03-11 14:31:49
    /*给数组字符串*/...}上面程序在编译时, 遇到char s[30]这条语句时, 编译程序会在内存的某处留出连续30字节的区域, 并将第一个字节的地址赋给s。当遇到strcpy( strcpy 为Turbo C2.0的函数)时, 首先在目标文件的...

    main()

    {

    char s[30];

    strcpy(s, "Good News!"); /*给数组赋字符串*/

    .

    .

    .

    }

    上面程序在编译时, 遇到char s[30]这条语句时, 编译程序会在内存的某处留

    出连续30个字节的区域, 并将第一个字节的地址赋给s。当遇到strcpy( strcpy 为

    Turbo C2.0的函数)时, 首先在目标文件的某处建立一个"Good News!/0" 的字符串。

    其中/0表示字符串终止, 终止符是编译时自动加上的, 然后一个字符一个字符地复

    制到s所指的内存区域。因此定义字符串数组时, 其元素个数至少应该比字符串的

    长度多1。

    注意:

    1. 字符串数组不能用"="直接赋值, 即s="Good News!"是不合法的。所以应分

    清字符串数组和字符串指针的不同赋值方法。

    2. 对于长字符串, Turbo C2.0允许使用下述方法:

    例如:

    main()

    {

    char s[100];

    strcpy(s, "The writer would like to thank you for"

    "your interest in his book. He hopes you"

    "can get some helps from the book.");

    .

    .

    .

    }

    指针数组赋值

    例如:

    main()

    {

    char *f[2];

    int *a[2];

    展开全文
  • 这时候就相当于对一个字符数组里的一个元素赋值。 并且是不合法的,因为a[20]已经超出了数组容量 下面这图片 只course[1]赋值是可以的 解决方案: 需要用到strncpy函数 百度百科:.

    一,如果对 char course[20] 就会报错。

     原因分析:

    因为在字符串数组中,你在声明这个字符串的时候可以进行初始化

    char[20]="123456";

    但是不能像下面这样 这段代码

    char a[20];
    a[20]="123456";

    这时候就相当于对一个字符串数组里的一个元素赋值。

    并且是不合法的,因为a[20]已经超出了数组容量

    下面这个图片 只对course[1]赋值是可以的

    解决方案:

    需要用到strncpy函数

    百度百科:strncpy函数用于将指定长度的字符串复制到字符数组中,是 C语言的库函数之一,来自 C语言标准库,定义于 string.h

    语法形式为:char *strncpy(char *dest, const char *src, int n),表示把src所指向的字符串中以src地址开始的前n个字节复制到dest所指的数组中,并返回被复制后的dest。

     

              注意:          s1.course=s1.&coure[1]              ,但却不能写  &coure[1] ,      因为s1后需要跟成员对象名

    展开全文
  • 怎么给这个数组赋值呢?1、定义的时候直接用字符串赋值char a[10]="hello";注意:能先定义再给它赋值,如char a[10]; a[10]="hello";这样是错误的!2、对数组中字符逐个赋值char a[10]={'h','e','l','l','o'};3、...

    学了这么多年的C语言,突然发现连字符串赋值都出错,真的很伤心。

    char a[10];

    怎么给这个数组赋值呢?

    1、定义的时候直接用字符串赋值

    char a[10]="hello";

    注意:不能先定义再给它赋值,如char a[10]; a[10]="hello";这样是错误的!

    2、对数组中字符逐个赋值

    char a[10]={'h','e','l','l','o'};

    3、利用strcpy

    char a[10]; strcpy(a, "hello");

    易错情况:

    1、char a[10]; a[10]="hello";//一个字符怎么能容纳一个字符串?况且a[10]也是不存在的!

    2、char a[10]; a="hello";//这种情况容易出现,a虽然是指针,但是它已经指向在堆栈中分配的10个字符空间,现在这个情况a又指向数据区中的hello常量,这里的指针a出现混乱,不允许!

    还有:不能使用关系运算符“==”来比较两个字符串,只能用strcmp() 函数来处理。

    C语言的运算符根本无法操作字符串。在C语言中把字符串当作数组来处理,因此,对字符串的限制方式和对数组的一样,特别是,它们都不能用C语言的运算符进行复制和比较操作。

    直接尝试对字符串进行复制或比较操作会失败。例如,假定str1和str2有如下声明:

    char str1[10], str2[10];

    利用=运算符来把字符串复制到字符数组中是不可能的:

    str1 = "abc";     /*** WRONG ***/

    str2 = str1;       /*** WRONG ***/

    C语言把这些语句解释为一个指针与另一个指针之间的(非法的)赋值运算。但是,使用=初始化字符数组是合法的:

    char str1[10] = "abc";

    这是因为在声明中,=不是赋值运算符。

    试图使用关系运算符或判等运算符来比较字符串是合法的,但不会产生预期的结果:

    if (str1==str2) ...    /*** WRONG ***/

    这条语句把str1和str2作为指针来进行比较,而不是比较两个数组的内容。因为str1和str2有不同的地址,所以表达式str1 == str2的值一定为0。

    展开全文
  •  怎么给这个数组赋值呢? 1、定义的时候直接用字符串赋值 char a[10]=”hello”; 注意:能先定义再给它赋值,如char a[10]; a[10]=”hello”;这样是错误的! 2、对数组中字符逐个赋值 char a[10]={‘h’,’e...
  • C语言二维数组字符串的赋值

    千次阅读 2021-05-19 09:07:13
    今天用到了二维数组作为参数传递的程序,通过网上搜索,针对自己遇到的问题做整理。1、在被调用函数的形参数组定义可以省略第维的大小,第二维可省略,如下:void ... //不合法将二维数组作为形参时,第维大...
  • 字符数组赋值方法

    千次阅读 2015-06-21 18:56:00
    /*指定一个字符数组*/ . . . } 在编译的时候上面的程序, 经验char s[30]当本声明, 程序会在内存的某处留 出连续30字节的区域, 并将第一个字节的地址赋给s。当遇到strcpy( strcpy 为 Turbo C2.0的函数)时, 首先...
  • 注意:能先定义再给它赋值,如char a[10]; a[10]=“hello”;这样是错误的! 2、定义之后我们可以利用strcpy进行赋值 例如;char a[20] ; strcpy(a,“hello”); 易错情况: 1、char a[10]; a[10]=“hello”...
  • C语言(C++)如何给字符数组赋值

    万次阅读 多人点赞 2018-01-25 13:54:36
    3、(1)如果在定义字符数组进行初始化,则数组中各元素的值是可预测的;  (2)如果花括号中提供的初值数(即字符数)大于数组长度,则按语法错误处理;  (3)如果花括号中提供的初值
  • 2.字符数组的每一个元素可存放一个字符,但它并限定最后一个字应该是什么。 3.可以用赋值语句将字符串常量或其他字符串赋值给字符串变量。如str1=str2,,错误。 a[4]={'a','b','c','d'} 如果以单引号赋值...
  • 字符型指针,数组字符赋值

    千次阅读 多人点赞 2019-07-09 10:17:44
    、 C语言中,为什么字符串可以赋值字符指针变量 ...问:一直理解了为什么可以将字串常量赋值字符指针变量,请各位指点! 答: 双引号做了3件事: 1.申请了空间(在常量区),存放了字符串 2...
  • 二维字符数组的定义、赋值和使用

    万次阅读 多人点赞 2019-09-04 00:07:43
    二维字符数组一般用于存储和处理多字符串,二维字符数组中的每行均可存储表示一个字符串。 二维字符数组的定义 二维字符数组的定义格式为: char 数组名[第维大小][第二维大小]; 如: char c[3][10]; //...
  • 怎么给这个数组赋值呢? 字符数组用字符串赋值的三种可行形式: 1、定义的时候直接用字符串赋值 char a[10]="hello"; 【注意】能先定义再给它赋值,如char a[10]; a[10]="hello";这样是错误的,一个字符怎么...
  • C语言 字符数组赋值

    千次阅读 2018-05-29 09:24:00
    /给数组字符串/ . . . } 上面程序在编译时, 遇到char s[30]这条语句时, 编译程序会在内存的某处留 出连续30字节的区域, 并将第一个字节的地址赋给s。当遇到strcpy( strcpy 为 Turbo C2.0的函数)时, 首先在目标...
  • 字符数组的定义和初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。 charstr[10]={'I','','a','m','',‘h’,'a','p','p','y'}; 即把10字符分别赋给str[0]到str[9]10元素 如果花...
  • 字符数组的定义和初始化字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。charstr[10]={'I','','a','m','',‘h’,'a','p','p','y'};即把10字符分别赋给str[0]到str[9]10元素如果花括号中...
  • 如何给结构体中的字符数组赋值

    千次阅读 2016-11-07 21:59:21
    举例如下: ...注意:能先定义再给它赋值,如 char a[10]; a[10]="hello"; 这样是错误的! 2、对数组中字符逐个赋值 char a[10]={'h','e','l','l','o'}; 3、利用strcpy char a[10]; strcpy(a, "he
  • c中给字符数组,字符串指针赋值的方法总结

    万次阅读 多人点赞 2018-01-12 10:22:48
    怎么给这个数组赋值呢?谭浩强的书上明确指出,字符数组可以在定义时整体赋值,能再赋值语句中整体赋值。 1、定义的时候直接用字符串赋值 char a[10]="hello"; 注意:能先定义再给它赋值,如char a[10]; a[10...
  • C 语言字符数组的定义与初始化

    千次阅读 2020-12-18 18:00:02
    1、字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。char str[10]={ 'I',' ','a','m',' ',‘h’,'a','p','p','y'};即把10字符分别赋给str[0]到str[9]10元素如果花括号...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 61,309
精华内容 24,523
关键字:

对字符数组s赋值,不合法的一个是

友情链接: ShopCart.zip