如何将字符数组分配给字符串文字
How to assign an array of characters to a string literal
我有一个 char 数组,我正在尝试在数组中使用具有相同字符的字符串文字。
我尝试了 strcpy 和 =,并尝试了我在以下代码中所做的事情。但它似乎不起作用或者我正在理解一些东西。
char s1[10]="Youssef";
char *s2
while(*s2!='[=10=]')
*s2++=*s1++;
printf("%s",s2);
进程没有 return。
字符串文字是只读的。
无论如何,你试图做的事情似乎很困惑。
字符串文字:char *sl = "string literal";
一个未初始化的字符指针:char *s2;
为了做你喜欢的拷贝,你首先需要为字符串分配内存。
此外,您不能对数组进行指针运算。数组和指针不是一回事!
此外,你应该记住s2
指针的来源,因为在递增它直到复制完成后,你需要重新设置指针。练习:想想如果你做了会发生什么复制一个函数(最好命名为 mystrcpy`)...
完整示例:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
char s1[10]="Youssef";
char *s2 = malloc(sizeof(char) * (strlen(s1) + 1)); // +1 for the NULL-terminator
int i = 0;
char *origin_s2 = s2;
while(s1[i] != '[=10=]')
*s2++ = s1[i++];
*s2 = '[=10=]';
s2 = origin_s2;
printf("%s\n", s2);
return 0;
}
输出:
Youssef
PS:强烈建议检查内存动态分配是否成功(检查malloc()
的return值是否不是NULL
)。
我有一个 char 数组,我正在尝试在数组中使用具有相同字符的字符串文字。
我尝试了 strcpy 和 =,并尝试了我在以下代码中所做的事情。但它似乎不起作用或者我正在理解一些东西。
char s1[10]="Youssef";
char *s2
while(*s2!='[=10=]')
*s2++=*s1++;
printf("%s",s2);
进程没有 return。
字符串文字是只读的。
无论如何,你试图做的事情似乎很困惑。
字符串文字:char *sl = "string literal";
一个未初始化的字符指针:char *s2;
为了做你喜欢的拷贝,你首先需要为字符串分配内存。
此外,您不能对数组进行指针运算。数组和指针不是一回事!
此外,你应该记住s2
指针的来源,因为在递增它直到复制完成后,你需要重新设置指针。练习:想想如果你做了会发生什么复制一个函数(最好命名为 mystrcpy`)...
完整示例:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
char s1[10]="Youssef";
char *s2 = malloc(sizeof(char) * (strlen(s1) + 1)); // +1 for the NULL-terminator
int i = 0;
char *origin_s2 = s2;
while(s1[i] != '[=10=]')
*s2++ = s1[i++];
*s2 = '[=10=]';
s2 = origin_s2;
printf("%s\n", s2);
return 0;
}
输出:
Youssef
PS:强烈建议检查内存动态分配是否成功(检查malloc()
的return值是否不是NULL
)。