让我说我有:
char myName[] = "Jason Marks ";
我想把它转移到普通的char中。以下方法无效:
char fullName = myName[];
我怎样才能让整个“Jason Marks”转移到新变量中? 而且,是否可以从该新变量中删除字符?
例如,删除第一个字符并保留:
"ason Marks "
答案 0 :(得分:1)
char
存储一个字符,你需要的是一个数组。
使用另一个char数组,并使用strncpy
将n个字符从源复制到目标。
strncpy(destination, source, length);
所以在你的情况下你会这样做:
char fullName[MAX_SIZE]; // Ensure MAX_SIZE >= strlen(myName) + 1,
// or dynamically allocate using malloc
// with the above size and remember to
// free it later.
strncpy(fullName, myName, strlen(myName));
现在,为什么不复制你需要的东西,而不是删除新数组中的第一个字符?
strncpy(fullName, myName + 1, strlen(myName)-1);
^^^ Start from 2nd position, index: 1
答案 1 :(得分:1)
无法在char
中存储字符串变量。由于char
能够保存单个字节,因此您尝试存储的是一些n
个字节的字符串。
相反,您可以使用指针来执行此操作:
char array[] = "My Name";
char *ptr = array;
现在,如果您只需要"y Name"
,只需将ptr
增加1,即ptr++;
,现在如果使用ptr
打印printf
,您将获得"y Name"
{1}}。
注意:您也可以使用char *ptr = "My Name";
,但问题是这会将字符串"My Name"
存储在只读位置,即ptr
将指向不可修改的位置
因此,在结论中,您不允许执行以下任何操作:ptr[0] = 'B';
但您可以ptr++;
编辑:回应 Jason Marks的评论:
你可以用\0
字符替换最后一个字符,即
ptr[strlen(ptr) - 1] = '\0';