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。所以MyArray
和MyArray+ 1
将是例如array+3
和array+1
,这是相同的地址。
【问题讨论】:
【参考方案1】:如果不知道sem_t
的内部结构,分配或复制sem_t
对象的语义是不清楚的。
如果sem_t
是一个简单的句柄或指针,那么只需获取一个副本,两个副本都将引用相同的信号量。
如果sem_t
是一个 POD 结构,则可以进行逐字节复制,但该副本将是一个不同且独立的信号量。
如果 sem_t
不是 POD 并且包含指针,则 copyinmg 非常重要。
您可能真正想要的是MyArray
以sem_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] = &array[1];
或任何你想要的
然后像 sem_wait(MyArray[0]);
一样使用它,这与您原来的 array
不同,后者是 sem_wait(&array[1]);
,因为 MyArray 已经是基于指针的。
【讨论】:
以上是关于C程序两个字符串数组如何相互赋值?的主要内容,如果未能解决你的问题,请参考以下文章