您的位置:

c语言我的字符串无法赋值,c语言没有赋值

本文目录一览:

C语言我的字符串无法赋值

你把

printf("\t\t%s\n",p[20]);

换成

printf("\t\t%s\n",p);

就可以了

怎么进行字符串赋值?C语言

在C语言中,字符串的赋值主要有两种方法,第一种是通过指针的方式直接赋值,第二种是通过数组直接赋值。

1、指针式赋值。

通过程序的运行情况,可以知道:char *p = "hello";这种字符串的赋值方式是完全没有问题的。要理解这种赋值方式,首先得理解双引号(特别注意:这个是双引号,不要赋值的时候给弄了个单引号)在这个语句中做了什么工作。双引号主要做了3个工作,分别是:

(1)申请了空间(在常量区),存放了字符串。

(2)在字符串尾加上了“\0”。

(3)返回地址。

这里所返回的地址就赋值给了char *类型的指针变量p。

2、通过字符数组直接把字符串赋值。程序如下:

扩展资料:

字符串赋值需要注意的一些问题:

直接把字符串赋值给数组名(也就是数组首元素的首地址)是不行的。

会出现以下错误:

参考资料:

百度百科--字符串赋值

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

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

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

2、在test.cpp文件中,输入C语言代码:char a[20];strcpy(a, "hello");printf("%s", a);。

3、编译器运行test.cpp文件,此时成功将字符串赋值给了字符串a并打印。

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

str[10]='\0';

以上这行是越界操作。但是在这个程序中str[10]这个单元是编译留空的,没有与其他变量冲突,所以不出错。在VC下,如果改成12,就与 i冲突了。以下例子可知 str[12]='\0'相当于把i置为0:

#include stdio.h

void main()

{

int i;

char str[12];

for(i=0;i12;i++)

str[i]=i+'a';

printf("i=%d\n", i);

str[12]='\0';

printf("%s\n",str);

printf("i=%d\n", i);

getch();

}

在其他编译环境中,可能影响在str后面声明的变量。

c语言为什么 字符串不能直接赋值 比如 int a[10]; a = "wenti";

数组名代表首地址,你定义int

a[10],系统会给你开辟空间,当a[10]的生存周期结束,系统就会通过它的地址也就是a来释放它。a

=

"wenti"实际上是字符串常量"wenti"的首地址赋值给了a,如果可以直接赋值,那么当a[10]的生存周期结束的时候,系统就找不到它的开辟的空间了,就无法释放它的空间,所以不能直接赋值!