当前位置:首页 » 编程语言 » c语言字符串为啥不能用
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言字符串为啥不能用

发布时间: 2022-08-31 13:09:11

c语言统计字符串个数为什么不能运行

#include"stdio.h"
intlength(char*s)
{
char*p;
inta=0;
p=s;
while(s[a]!='')
{
a++;

}
returna;
}
main()
{
chars[100];
intb;
printf("请输入一个字符串:");
gets(s);
b=length(s);
printf("字符串长度为%d ",b);

}

⑵ 1 在计算机二级c语言中 为什么不能用字符串常量对字符数组名进行整体赋值

语法规定的,字符串常量对编译器来说只是个地址而已,字符串常量存储在代码段,不可被修改,你可以把字符串给一个字符串指针赋值,但是编译器是不会帮你帮字符串的数据放到数组的空间内,这些要自己完成,或者调用memcpy内存拷贝将整块的字符串复制过去

⑶ C语言中,字符串为什么不能直接用等于号赋值给一个变量。 例如 int a;a=“bcd”;

等号当然可以用赋值,赋值就是把等号左边值的赋给右边,之所以你写的不对是因为你的数据类型不对。a是int型,即整数型的,例如你可以让a=3意思是把3赋给a,但不能让一个字符串赋给a,所以你那样赋值肯定会报错。

c语言没有专门用于储存字符串的变量类型,字符串都是被储存在char类型的数组中。可以把所有的字符串都看成是一个数组。可以这样声明chara[4]={'b','c','d',''};意思就是声明一个char类型的数组,数组中元素的个数是4个,但只能存3个元素,最后一个是空字符。每个元素分别是b,c,d和空字符。

输出也很容易 用%s表示字符串,printf("%s",a); 请看我的示例图

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

数组名代表首地址,你定义int
a[10],系统会给你开辟空间,当a[10]的生存周期结束,系统就会通过它的地址也就是a来释放它。a
=
"wenti"实际上是字符串常量"wenti"的首地址赋值给了a,如果可以直接赋值,那么当a[10]的生存周期结束的时候,系统就找不到它的开辟的空间了,就无法释放它的空间,所以不能直接赋值!

⑸ c语言中为什么不能用关系运算符比较两个字符串

因为关系运算符只能比较两个数的大小关系
而字符串实际上是以字符串数组的形式存储,它是数组,而数组是不能直接用关系运算符比较大小的

⑹ C语言里为什么不能这么写

因为你是用字符数组表示的字符串,而字符数组也是数组的一种,只要是数组就不能一次性赋值多个数组元素(即字符串)。而strcpy()函数实际上是将指定字符串拆成一个一个的字符,然后循环将每个字符按顺序赋值给字符数组的各个元素。

⑺ 快!为什么c语言中,字符串不能直接用关系运算符

c语言字符串比较不能直接用关系运算符进行正确比较。
可以用
字符串比较函数strcmp
格式:
strcmp(字符数组名1,字符数组名2)
功能:按照ascii码顺序比较两个数组中的字符串,并由函数返回值返回比较结果。
字符串1=字符串2,返回值=0;
字符串2〉字符串2,返回值〉0;
字符串1〈字符串2,返回值〈0。
本函数也可用于比较两个字符串常量,或比较数组和字符串常量。

⑻ c语言字符串指针为什么不能用scanf赋值

C语言是比较低级的语言,没有字符串概念,只有字符数组,不能自动分配空间,要存放数据,必须预先定义存储空间的大小!
改为:char
name[100];
一定要常量
scanf("%d%s",&a[i].nu,a[i].name);
就没问题了!
估计你曾经看过这种定义法:char
*name="abcd";这种也是字符数组初始化固定的空间4个,所以你要记住,初始化一定要预定存放的空间大小!
还有你想达到高级语言的效果,你也可以用
a[i].name
=
(char
*)malloc(100);
/*这里也要常量*/
scanf("%d%s",&a[i].nu,a[i].name);
就没问题了!

⑼ c语言 字符串为什么读取不了

20行后,缺少关闭文件,然后重新打开文件

⑽ C语言高手请赐教:为什么要输入10行字符串不能够输入呢

s[i]只是一个字符指针变量,你没有对这个地址后面的一系列内存申请使用,输入一连串的字符后会出错的。