本文目录一览:
- 1、C语言我的字符串无法赋值
- 2、怎么进行字符串赋值?C语言
- 3、C语言中怎么字符串赋值?
- 4、关于C语言字符串赋值的问题
- 5、c语言为什么 字符串不能直接赋值 比如 int a[10]; a = "wenti";
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]的生存周期结束的时候,系统就找不到它的开辟的空间了,就无法释放它的空间,所以不能直接赋值!