c语言结构体中的一个char数组怎么赋值?

c语言结构体中的一个char数组怎么赋值?,第1张

(1)用字符常量逐个初始化数组。例如:

char a[8]={'i','l','o','v','e','y','o','u'};

把8个字符依次分别赋给c[0]~c[7]这8个元素。

如果在定义字符数组时不进行初始化,则数组中各元素的值是不可预料的。如果花括号中提供的初值个数(即字符个数)大于数组长度,则出现语法错误。

如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定为空字符(即'\0')。

如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度。

例如:char c[]={‘c’,‘’,‘p’,‘r’,‘o','g','r','a','m'};

这时c数组的长度自动定为9。也可以定义和初始化一个二维字符数组,例如:

char diamond[5][5]={{'','','#'},{'','#','','#'},{'#','','','','#'},

{'','#','','#'},{'','','#'}};用它代表一个菱形的平面图形。

(2)字符串常量初始化数组。例如:

char c[]={‘c’,‘’,‘p’,‘r’,‘o','g','r','a','m'};

可写为:char c[]={"C program"};

或去掉{}写为:char c[]="C program";

注意:此时数组c的长度不是9,而是10。因为字符串常量的最后由系统加上一个'\0'。上面的初始化与下面的初始化等价。

char c[]={‘c’,‘’,‘p’,‘r’,‘o','g','r','a','m','\0'};

扩展资料:

其定义的一般形式是:char数组名[数据长度]

例如:

char c[10];

c[0]='I';c[1]='';c[2]='l';c[3]='o';c[4]='v';c[5]='e';c[6]='';c[7]='y';c[8]='o';c[9]='u';

以上定义了c为字符数组,包含10个元素。

由于字符型数据是以整数形式(ASCII代码)存放的,因此也可以用整型数组来存放字符数据,例如:

int c[10];

但这时每个数组元素占2个字节的内存单元,浪费存储空间。

字符数组也可以是二维或多维数组,例如:

char c[5][10];

即为二维字符数组。

初始化

字符数组的初始化与数值型数组初始化没有本质区别。但它除了可以逐个给数组元素赋予字符外,也可以直接用字符串对其初始化。

输入输出

字符数组的输入

(1)用getchar()或scanf()的'%c'格式符对数组进行字符赋值。例如,对于数组a[10]:用getchar()赋值:

for(i=0;i<10;i++)

a<i>=getchar();

用scanf()赋值:

for(i=0;i<10;i++)

scanf("%c",&a<i>);

(2)用scanf()的'%s'格式对数组赋值。还是对于数组a[10]:

scanf("%s",a);

scanf("%s“,&a[0]);

输入”C program“并回车时,a数组会自动包含一个以”\0“结尾的字符串”C program“。

字符数组的输出

(1)用putchar()或printf()的‘%c’格式符对数组进行字符赋值。例如,对于数组a[10]:用putchar()赋值:

for(i=0;i<10;i++)

a<i>=putchar();

用printf()赋值:

for(i=0;i<10;i++)

printf("%c",a<i>);

输出结果为:

c program

(2)用printf()的'%s'格式对数组赋值。还是对于数组a[10];

printf("%s",a);

输出结果为:

c program

参考资料:

百度百科——字符数组

char转换
Qt下面,字符串都用QString,确实给开发者提供了方便,想想VC里面定义的各种变量类型,而且函数参数类型五花八门,经常需要今年新那个类型转换
Qt再使用第三方开源库时,由于库的类型基本上都是标准的类型,字符串遇的多的就是Char类型
在Qt下怎样将QString转char呢,需要用到QByteArray类,QByteArray类的说明详见Qt帮助文档。
因为char最后都有一个‘/0’作为结束符,而采用QString::toLatin1()时会在字符串后面加上‘/0’
方法如下:
Qstring str;
char ch;
QByteArray ba = strtoLatin1();
ch=badata();
这样就完成了QString向char的转化。经测试程序运行时不会出现bug
注意第三行,一定要加上,不可以strtoLatin1()data()这样一部完成,可能会出错。

补充:以上方法当QString里不含中文时,没有问题,但是QString内含有中文时,转换为char就是乱码,采用如下方法解决:
方法1:
添加GBK编码支持:
#include <QTextCodec>
QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
然后改变上面的第三行为:QByteArray ba = strtoLoacl8Bit(); toLoacl8Bit支持中文
方法2:
先将QString转为标准库中的string类型,然后将string转为char,如下:
std::string str = filenametoStdString();
const char ch = strc_str();

所谓字符串就是多个字符顺序存放并且以0结尾
char c='a';
char a[20]={'a','b','c'};
int b=52;
char s[20];
s[0]=c; s[1]=0; printf("%s\n",s); //输出字符串: a
s[0]=a[0]; s[1]=a[1]; s[2]=a[2]; s[3]=0; printf("%s\n",s); //输出字符串: abc
sprintf(s,"%d",b); printf("%s\n",s); //输出字符串: 52

将字符串赋值给一个字符指针:char p="helloworld";
字符串是一个常量是不可以将字符指针的内容赋值给一个字符串(赋值给字符串数组是可以的)的
char str[100];
strcpy(str,p);就可以了
for(i=0;i<100;i++)
{if(p!='\0'&&p!=NULL)
str[i]=p;
else break;
}
大概就是这样了

C++ std::string提供了很多种方式,完成字符数组到string类变量的复制,如:
char str[]="hello";
1、string s(str); //构造函数,用C字符串str初始化
2、string s=str; //复制构造函数
3、string s ;
s=str ; //重载=运算符,完成复制
4、string s ;
sinsert(0,str);//向一个空串中,插入C字符串
5、string s;
s+=str ; //重载+=运算符,把str连接到当前字符串(空串)结尾

C++把一个字符串用指针赋值给另一个字符串

#include<iostream>
#include<string>
using namespace std;
int main()
{
char s[]="asdfghjk",b[20];
strcpy(b,a); 直接使用字符串拷贝就可以了
cout<<b;
return 0;
}
如果是char b = a的话只是把a和b所指向的内存一样,如果修改了a的值则b的值也会同时进行修改。如果是 for(int i=0;i<20;i++) (b+i)=(s+i);或strcpy(b,a)则修改a的值不影响b;

C语言 把一个字符串赋给另一个字符串

我不明白你函数strassign里for语句里没有给DATA[]里考备字符串,而且没有将该字符串传出来啊,你可以向楼上说的看看头文件里STRCPY函数怎么写的。打开stringh就行。

C语言怎么把一个字符串用另一个字符串替换

#include<stringh>
char str1[10]="qwertyuio";
char str2[5]="abcd";
strcpy(str1,str2);
这样1中的内容会被2种替换;
(1中的空间大小必须足够容纳2,不然会有问题的)

c语言 如何把一个字符串的值赋给另一个字符串?

直接不能赋值
要strcpy(str,arg);
当然str要比arg长,不然还是错误

用c++编写程序,实现俩个字符串赋值的函数,并把一个字符串插到另一个字符串的

这个就是strcat()函数的功能,这里有个例子你可以参考一下:
char strcat(char strDes, const char strSrc)
{
assert((strDes != NULL) && (strSrc != NULL));
char address = strDes;
while (strDes != '\0')
++ strDes;
while ((strDes ++ = strSrc ++) != '\0')
NULL;
return address;
}

c++把一个字符串加到另一个字符串后面的涵数

strcat(char[],char[]);
C++中定义字符串类型的变量用加号即可实现
如:string str1="I am"
string str2="student"
str1=str1+str2;
这时str1为“I am student”

怎样让一个字符串等于另一个字符串c++

#include<stringh>
strcpy(目的串名,源 *** 作串名);

C语言不用指针如何用一个字符串代替另一个字符串

用字符串函数,strcpy();
如,
char a[10]="my",b[]="hello!";
strcpy(a,b); 将b中字符串拷贝到a中。
printf("%s",a);
其中,a的长度必须大于b;
不知道你具体需要什么。这只是一个方法,具体需要怎样需要你自己去变通!

c语言用指针将一个字符串插入另一个字符串中指定位置

必须要保证dest足够长,这个我没有判断,代码如下。
int length = strlen(src); 得到src的长度
for(int i = strlen(dest)-1; i >= pos; i--)dest[i+length] = dest[i];dest中pos之后的元素后移
for(int j = pos; j < pos+length; j++)dest[j]=src[j-pos];插入元素
printf("%s",dest);

Java中如何将一个字符串赋给另一个字符串呢

java中字符串是一个常量,存储在常量池中,字符串的值不能变的,但是可以改变指向他们的引用:
String str1="avd";
String str2="avd";
String str3="abc";
这里str1和str2指向常量池的同一块内存对象avd,常量池中的avd是不能改变的,因为string是final类型,如果但是可以通过
str1="abc";改变str1引用变量的指向内存地址,这样str1指向的值变为abc了

标准C中没有字符串变量这一说法,其存储字符串是用字符数组。
#include <stdioh>
#include <stringh>
int main(){
char p[30];
strcpy(p,"hello"); //用这个函数可以给字符数组赋值。
printf("%s",p);
}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/13372964.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-31
下一篇2025-08-31

发表评论

登录后才能评论

评论列表(0条)

    保存