当前位置:首页 » 编程语言 » c语言空字符串赋值的几种方法
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言空字符串赋值的几种方法

发布时间: 2022-07-24 20:22:26

⑴ 关于c语言字符串赋值的问题

字符串 要用 char 数组存放,所以先要声明 一个 char 数组。
由于字符串要带一个字符串结束符,所以存放"123", 数组大小至少要用4。
char s[4];
或 多开几个单元: char s[10];
字符串赋值 有多种方法。最常用的是调用函数 strcpy():
char s[10];
strcpy(s,"123"); 就可以了,它自动带字符串结束符。
这时, printf("%s",s); 就可以看到屏幕上显示 123。
=============
一个字,一个字地 赋值也可以:
char s[4];
s[0]='1'; s[1]='2'; s[2]='3'; s[3]='\0';
数组下标从0开始,所以用到 s[0],s[1],...
单引号括起的叫字符常量,一个字,一个字地 赋值 要用字符常量
'\0' 是转义字符,是 字符串结束符
这时, printf("%s",s); 就可以看到屏幕上显示 123。
==============
变量声明时可以带“初始化”,这样赋初值很方便:
char s[4]="123";
当然 char s[10]="123"; 也可以。
char s[]="123"; 也可以。
方括号里没填大小,程序会自动计算大小,大小等于 sizeof("123"), 也就是4。
这时, printf("%s",s); 就可以看到屏幕上显示 123。

⑵ c语言 字符串之间如何赋值

全是错误的——
cahr a[100],b[100];//这样才能承载字符串,char a,b;这样a、b只能存入一个字符
scanf("%s",a);//写scanf("%s",&a);也可以
strcpy(b,a);//只能这样调用库函数拷贝,因为C没有字符串变量,也就没有字符串操作运算符。

⑶ C语言空字符串的问题;

你那越界了。
在定义的时候,char str[100]; 是指定了数组大小100个字符。
但是如果写,char str[]="";就是是将数组的大小和值定义成和字符串常量“”相同,而这里“”是空字符串。str就一个字符大小,里面存放的是结束符号0,所以后面你输入字符串给str,里面存放了第一个字符,而其他字符都存到越界的地址中。
想要定义不定长的数组。
只要使用malloc函数申请就可以了。
定义指针char *str=(char *)malloc(sizeof(char)*n);这里n就是你要的字符长度。
记得在第一次使用时判断一下str是否为NULL(NULL说明异常,应该终止程序)。

⑷ c语言如何给已经定义了的空字符串赋值

可以使用memset函数将字符串数组中所有元素全部设置为\0即可。
函数原型:void
*memset(void
*s,
int
ch,
size_t
n);
函数说明:将s中前n个字节
(typedef
unsigned
int
size_t
)用
ch
替换并返回
s

示例:
#include
<stdio.h>
#include
<string.h>
int
main()
{
char
buf[256]
=
"hello
world";
//buf字符数组初始化
printf("%d\n",
strlen(buf));
memset(buf,
0x00,
sizeof
(char)
*
256);
//全部设置为0x00即\0字符
printf("%d\n",
strlen(buf));
return
0;
}

⑸ c语言中 字符串赋值给数组的三种表达方式是什么

1楼的答案是错误的,建议回答别人问题还是要看看书的!
第一种方式:定义的时候进行初始化
char
str[200]={"abcd"};//这里去掉大括号也行
第二种方式:对数组各元素单独赋值
char
str[200];
str[200]={'a','b','c','d'};
/*编译系统会在最后加上'\0'的,然后就是不能使用str[200]="abcd"的方式对字符数组进行整体赋值*/
第三种方式:应该是使用指针吧
char
*str="abcd";
或者
char
*str;
str="abcd";
使用指针时,这两种方式都是可以的,而且你可以使用下标的方式引用字符串中的各字符

⑹ c语言字符串赋值

//
string[500]="abcdefg";
//是将字符串"abcdef"赋值给字符数组中string[500]这个
元素
,先不说string[500]已经越界了.
单单是string[500]只能存放一个
字符
,但你这里却要将一串字符串赋值给他.当然会
错误
.像你说的在
定义

初始化
是对的.如果定义后要进行赋值.就用string.h中的strcpy()函数,将"abcdefg"复制到字符串string中.
代码
如下:
#include
<stdio.h>
#include
<string.h>
int
main()
{
char
string[500];
//
string[500]="abcdefg";
strcpy(string,"abcdefg");
//将
字符串常量
赋值给字符数组return
0;
}

⑺ C语言中怎么字符串赋值

需要准备的材料分别有:电脑、C语言编译器。

1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。

⑻ C语言 怎么把字符数组中的字符赋值给字符变量

第一种写法,等同于char a[10] = {"abc"};
第一种写法,用一个字符串赋值,实际上保存了4个字节(包含字符串结束符)。
第二种写法,只赋值了三个字节。
1、char c[5];

c[0]=’H’; c[1]=’e’; c[2]=’l’; c[3]=’l’; c[4]=’o’;

2、charc[5]={‘H’,’e’,’l’,’l’,’o’};

3、(1)如果在定义字符数组时不进行初始化,则数组中各元素的值是不可预测的;

(2)如果花括号中提供的初值个数(即字符个数)大于数组长度,则按语法错误处理;

(3)如果花括号中提供的初值个数(即字符个数)小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定为空字符(即‘\0’);

4、(如何将字符串赋值给字符数组)

C语言中,将字符串作为字符数组来处理的。C语言规定了一个“字符串结束标志”,以字符’\0’作为标志。为此,再对字符数组初始化的方法补充一种用字符串常量来使字符数组初始化方法:

char c[] = {“Hello”};

或 char c[] =“Hello”; 注意:数组c的长度不是5,而是6.

上面的初始化等价于:char c[5]={‘H’,’e’,’l’,’l’,’o’,’\0’};

而不等价于:charc[5]={‘H’,’e’,’l’,’l’,’o’};

5、字符数组的输出

char c[] ={“Hello”};

printf(“%s”,c);

6、(如何将字符串赋值给字符数组)

strcpy(字符数组1,字符串2)

eg: char str1[10]=’’, str2={“Hello”};

strcpy(str1,str2);

执行后str1状态为:

H
e
l
l
o
\0
\0
\0
\0
\0
(1)“字符数组1”必须写成数组名形式(如str1),“字符串2”可以是数组名,也可以是字符串常量。eg strcpy(str1, “Hello”);

(2)不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。如下面两句都是不合法的:str1=”Hello”;

str1=str2;

而只能用strcpy函数将一个字符串复制到另一个字符数组中去,赋值语句只能将一个字符赋给一个字符型变量或者字符数组元素。如下面的语句是合法的:

char c[5],c1,c2;

c1=’A’;c2=’B’;

c[0]=’H’; c[1]=’e’; c[2]=’l’; c[3]=’l’; c[4]=’o’;

7、strlen函数是测试字符串实际长度(不包含‘\0’在内)的函数。

char c[10]=”Hello”’

printf(“%d”,strlen(c)); 或者Printf(“%d”,“Hello”); 输出为5

⑼ c语言中,怎么把带空格的字符串赋值给一个数组

方法如下:
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出现混乱,不允许。
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。