C语言中将字符串赋值给字符数组的问题
C语言中存放中文需要用字符串需要使用字符数组如 a[10]={'h','e','l','l','o','/0'}你这种存放方法可以使用二维数组a[0][10]={'h','e','l','l','o','/0'}a[1][10]={'c','a','t','/0'}需要初始化。
c语言字符串数组 c语言字符串数组定义
c语言字符串数组 c语言字符串数组定义
举例如下:
char s[20];s="helo";这样是错误的,原因就是不能用赋值语句将一个字符串常量直接给一个字符数组赋值。
char s[20];
char ss[]="hello";
s=ss;这也是错误的,原因是不能用赋值语句将一个字符数组直接给一个字符数组赋值
即字符串的(c语言中,但是在c++的string 类,上面的赋值是正确的)必须用strcpy()函数实现。
而char a[ ]=”toyou“那是因为我们在声明数组变量的时候就是,为其开辟空间,并为其初始化,这样才是符合c语言语法的。而上面的都是不符合语法的。
扩展资料
基本特性根据数字的个数调用malloc函数创建动态数组a
1、高级语言:它是把高级语言的基本结构和语句与低级语言的实用性结合起来的工作单元。
3、代码级别的跨平台:由于标准的存在,使得几乎同样的C代码可用于多种作系统,如Windows、DOS、UNIX等等;也适用于多种机型。C语言对编写需要进行硬件作的场合,优于其它高级语言。
4、使用指针:可以直接进行靠近硬件的作,但是C的指针作不做保护,也给它带来了很多不安全的因素。C++在这方面做了改进,在保留了指针作的同时又增强了安全性,受到了一些用户的支持,但是,由于这些改进增加语言的复杂度,也为另一部分所诟病。Ja则吸取了C++的教训,取消了指针作,也取消了C++改进中一些备受争议的地方,在安全性和适合性方面均取得良好的效果,但其本身解释在虚拟机中运行,运行效率低于C++/C。一般而言,C,C++,ja被视为同一系的语言,它们长期占据着程序使用榜的前三名。
参考资料:
你好!!!
举例如下:
char s[20];s="helo";这样是错误的,原因就是不能用赋值语句将一个字符串常量直接给一个字符数组赋值。
char s[20];
char ss[]="hello";
s=ss;这也是错误的,原因是不能用赋值语句将一个字符数组直接给一个字符数组赋值
即字符串的(c语言中,但是在c++的string 类,上面的赋值是正确的)必须用strcpy()函数实现。
而char a[ ]=”tstrcpy(charoyou“;为上面是正确呢???那是因为我们在声明数组变量的时候就是,为其开辟空间,并为其初始化,这样才是符合c语言语法的。而上面的都是不符合语法的。
char a[] ="toyou";
这才是对的,要用双引号。
这种方式叫初始化,是可以的,"toyou"这个字符串放在数据区里,在编译阶段就确定了。
a作为数组名,它是一个常指针,不能改变所指向的地址,只能是&a[0]
所以你在非声明的地方用a="xxx",就相当于改变了常量的值,是不允许的。
{char str[100];
char p;
// str="不能将字符串常量赋值给数组"; //错误:字符串常量不可以赋值给数组,需要strcpy或者一个一个赋值
p="能将字符串常量赋值给指针"; //可以,该字符串常量将首地址赋值给p,注意:不可以用p修改字符串常量的值
char a[]="可以将字符串直接初始化给数组"; //字符串常量可以初始化给数组,注意:只可以是初始化
printf("%sn",p);
printf("%sn",a);
return 0;
char str = "China",则str指向一个不可变的内存开头"China'0'";
char a[] = "toyou",则声明了一个字符数组a,a中有6个元素,原理同上,
你想要在字符串之间赋值必须使用strcpy(),你再看下指针那块吧,只有对他们在内存怎么存储的明白了才能明白原因,有什么不解的可以给我留言。
如何在C语言中用scanf输入数组
str="abcd";main()
我应该没有也弄错你的意思吧。{struct
{int num;
char name[20];
char ;
}stu[5];
for(i=0;i<5;i++)
{scanf("%d",&stu[i].num);
scanf("%s",&stu[i].name);
scanf("%d",&stu[i].age);
}{
printf( "%s",stu[i].name);
}}
拓展资料
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
{int n;
scanf("%d",&n);
char arr[n];
int i;
for(i=0;i {scanf(" %c",&arr[i]); }printf("%c {i2、对数组中字符逐个赋值f(arr[i]=='L') }else if(arr[i]=='R') {t=t-1; }} printf("%d }源代码截图: 参考资料:百度百科- 扩展资料: 二十世纪八十年代,为了避免各开发厂商用的C语言语法产生异,由美国标准局为C语言制定了一套完整的美国标准语法,称为ANSI C,作为C语言最初的标准。[1] 目前2011年12月8日,标准化组织(ISO)和电工委员会(IEC)发布的C11标准是C语言的第三个标准,也是C语言的标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。 C语言是一门面向过程的计算机编程语言,与C++,Ja等面向对象的编程语言有所不同。 其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。 执行scanf的代码: 可以观察到,arr[0]并未存入字符,t的数值比预期少1 原因:这种情况通常发生在前面已经有了输入语句,而当前的scanf是在接收字符(即用%c控制输入)时。由于前面的输入语句(不一定是scanf)把输入的' 改正错误之后的代码: {int n; scanf("%d",&n); char arr[n]; int i; for(i=0;i {scanf(" %c",&arr[i]); }printf("%c for(i=0;i {if(arr[i]=='L') }else if(arr[i]=='R') {t=t-1; }} printf("%d }将scanf中的%c变为 %c,得到预期结果。 非char类型数组,只能一个一个的输入数组元素! char 类型数组,可以用字符串作输入一连串的字符。char str[100] ; scanf("%s", str ); 用for循环实现.如: int i[10], j; for(j=0; j<9; j++) scanf("%d", &i[j]); 加了' '符号的字符,例如'c'.'3' 在c语言中, 由零个或多个字符组成且通过双引号括起来的有限序列就叫字符串. 例如: "hello world", "我爱", "A", "123456"等等. 另外字符串在内存中是由字符型数组来存储的.且在存储的时候多加'0'表示字符串已经结束. 例如: char string[12] = "hello wolrd"; 注意,字符串是以'0'结尾的,所以存储的数组大小至少是字符串长度加1. 字符常量:在C语言中一个字符常量代表ASCII字符集中的一个字符,在程序中用单引号把一个字符括起来作为字符常量。大小写字母代表不同的字常量;单引号中的空格也是;字符常量只能包含一个字符;字符常量只能用但括号括起来。下面是常用字符的SACII 'A’--'Z' 65-------90 '0'---'9' 48-------57 字符串char s[4]={"李四","张三","黄生","二傻子"},p[4];常量:字符串常量是用双引号括起来的,在C语言中系统会在每个字符串的自动加入一个'0'作为字符串的结束标志。 区别:'Z'是字符常量,占一个字节;"Z"是字符串常量,占两个字节,其中一个放'0'。 它们两个的用法都明白了,区别就知道了 字符 就是 键盘上的单个符号, 像 a,b,c,d.. 1,2,3,4,8....以{t=t+1;及一些特殊的符号, 字符串 就是字符组成的串, 比如你名字的拼音就可以看做一个字符串,它是有长度的 字符是用单引号表示,字符串是用双引号表示;例如:字符'c',字符串"c";在内存中字符串是以0结束的 最简单的方法事,单引号的是字符,双引号的是字符串 printf("请输入一串字符n"); gets(a); for(p=a;(p)!='0';p++) {b[i]=(p)-48; i++; }else b[i-1]=b[i-1]10+(p)-48; x=1; }else x=0; }for(j=0;b[j]!=0;j++) printf("%d ",b[j]); printf("共有%d个",j); printf("n"); return 0; 使用"%s"模式输出 但是这样做有限制: str[25}5]; 用scanf("%s",str);获得输入时,最多容纳254个字符,因为读入作会在后面加个"0"; 用printf("%s",str); 输出时,数组一定要是用"0"结束的。 不遵守以上规则会产生数组越界,导致不可知的错误。 #include#include "string.h" #include { char ch[100]; int i,length; int n_number=0,m_number=0; printf("请输入字符串: "); gets(ch);//获取输入,并存入数(2)整个字符串一次输入输出(%s)组中 length=strlen(ch);//计算输入字符串的长度 for(i=0;i {if(ch[i]>='0'&&ch[i]<='9')//判断是否为数字 {n_number++; }if(ch[i]>='a'&&ch[i]<='z'||ch[i]>='A'&&ch[i]<='Z')//判断是否为字母 }} printf("输入的字符串为: "); printf("字符串中数字的个数=%d,字母的个数=%dn",n_number,m_number); return 0; str[200]={"abcd"};//这里去掉大括号也行 第二种方式:对数组各元素单独赋值 str[200]; str[200]={'a','b','c','d'}; 第三种方式:应该是使用指针吧 或者 str; 使用指针时,这两种方式都是可以的,而且你可以使用下标的方式引用字符串中的各字符 1、在void strcat()的strcat前添加,表示返回char 指针。 2、strcat()应该返回str1,即 return str1。str1是连接的结果,调用者有确保str1数组空间足够大,以便在其尾部添加str2后,不会覆盖其他数据空间。 char strcatf(char sttmp = s2;r1[],char str2[]) 加一个号即可,返回的就是指针类型 {... return str1; 所谓清空数组,是要清空每个元素;清空字符串是将字符串置为空,这两个要求有异。 清空数组:char a[100]; int i; for ( i=0;i<100;i++ ) a[i]=0; 清空字符串:char a[100]; a[0]=0; //或a[0]='0'; memset(a, 0 , sizeof(a)); 这样就好了,记得加上头文件 a = '0';不对是因为a是一个数组的首地址,你给一个地址上写一个'0'是不被允许的作。 全部清零如1楼所说的memset可以,不过通常字符数组初始化个元}素为空即可,即a[0]='0 2、strcat()应该返回str1,即'C语言中什么是字符,什么是字符串啊,谢谢
char strcatf(char str1[],char str2[]) //想放回字符串数组的话,就返回首地址。c语言将字符串中的数字存到为数组d中
1函数名c语言字符串数组怎么输入和输出呢
调用scanf函数读入字符串c语言怎样输入字符串后转换为数组
{m_number++;c语言中 字符串赋值给数组的三种表达方式是什么?
{if(x==0)c语言怎么返回字符串数组?
#includeC语言。如何清空字符(串)数组、另求字符数组和字符串数组区别。
int age;