C程序两个字符串数组如何相互赋值?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C程序两个字符串数组如何相互赋值?相关的知识,希望对你有一定的参考价值。

两个字符串数组
char stu[],edu[];
edu[]="good";
stu=edu;
直接赋值报错
该怎么办?
谢谢大家~~

可以在定义的时候直接赋,就是这样:
char stu[]="good",edu[]="good";
或者是在后面用循环一个一个的赋,就是这样:
char stu[],edu[]="good";int i;
for (i=0;i<4;i++)

stu[i]=edu[i];

在定义后再给字符数组赋值的话必须用循环了,
有一个库函数可以执行字符串拷贝,我记得是strcpy(a[],b[])也是可以用的,可以把一个字符串的内容完全拷贝到另一个字符串那里
参考技术A 可以在定义的时候直接赋,就是这样:
char
stu[]="good",edu[]="good";
或者是在后面用循环一个一个的赋,就是这样:
char
stu[],edu[]="good";int
i;
for
(i=0;i<4;i++)

stu[i]=edu[i];

在定义后再给
字符数组
赋值的话必须用循环了,
有一个
库函数
可以执行字符串拷贝,我记得是strcpy(a[],b[])也是可以用的,可以把一个字符串的内容完全拷贝到另一个字符串那里
参考技术B 用strcmp阿,不管长度是否相等都能用。
原型:extern
int
strcmp(const
char
*s1,const
char
*
s2);
用法:#include
功能:比较字符串s1和s2。
一般形式:strcmp(字符串1,字符串2)
说明:
当s1
s2时,返回值>0
即:两个字符串自左向右逐个字符相比(按ascii值大小相比较),直到出现不同的字符或遇'\0'为止。
参考技术C 后面的stu和edu要打[]吗?
(非C++人员)

C中的信号量数组和相互赋值

【中文标题】C中的信号量数组和相互赋值【英文标题】:Arrays of semaphore and mutual assignment in C 【发布时间】:2014-12-08 20:43:21 【问题描述】:

我正在尝试在 C 中使用信号量。

我有全局变量:`sem_t array[5];'

以及函数中的本地sem_t MyArray[2];

我初始化我的信号量。

for(i = 0; i < 5; i++)
    sem_init(&array[i], 0, 1);

我想将数组中的 5 个信号量中的 2 个分配给 MyArray。所以MyArrayMyArray+ 1 将是例如array+3array+1,这是相同的地址。

【问题讨论】:

【参考方案1】:

如果不知道sem_t 的内部结构,分配或复制sem_t 对象的语义是不清楚的。

如果sem_t 是一个简单的句柄或指针,那么只需获取一个副本,两个副本都将引用相同的信号量。

如果sem_t 是一个 POD 结构,则可以进行逐字节复制,但该副本将是一个不同独立的信号量。

如果 sem_t 不是 POD 并且包含指针,则 copyinmg 非常重要。

您可能真正想要的是MyArraysem_t* 的类型引用 array

// By initialisation
sem_t* MyArray[2] =  &array[3], &array[1]  ;

// By assignment
sem_t* MyArray[2] ;

MyArray[0] = &array[3] ;
MyArray[1] = &array[1] ;

【讨论】:

【参考方案2】:

尝试使用指向原件的指针,而不是副本

sem_t* MyArray[2];

然后分配MyArray[0] = &amp;array[1]; 或任何你想要的

然后像 sem_wait(MyArray[0]); 一样使用它,这与您原来的 array 不同,后者是 sem_wait(&amp;array[1]);,因为 MyArray 已经是基于指针的。

【讨论】:

以上是关于C程序两个字符串数组如何相互赋值?的主要内容,如果未能解决你的问题,请参考以下文章

c语言字符串相互赋值

如何在swift中实现数组的深拷贝

关于在KEIL中对字符数组赋值字符串操作的奇怪问题?

数组不能直接赋值

c语言输出字符串数组出现乱码

c语言字符数组如何比较?