从 C 上的字符串中删除第一个单词
Delete first word from string on C
我有一个接收两个字符数组(资源和结果)并更改它们的函数。结果将只是第一个词和之前所有内容的资源,第一个词除外。第一个词写入结果,但在资源中删除了一些空格...
void selectFirstWord(char *src, char* res) {
int i = 1;
while(*src != ' ' && *src != 0) {
*(res++) = *(src++); //посимвольное копирование из src в res
i++;
}
while(*src != 0) {
*(src++) = *(src+i);
}
*res = 0;
}
您可以保留一份原件src
void selectFirstWord(char *src, char* res) {
char *copy = src; // keep copy
while(*src != ' ' && *src != 0) {
*res++ = *src++;
}
*res = 0; // "close" res
while(*src == ' ') src++; // eat spaces after the word
// Copy the rest of src to `copy`
do {
*copy++ = *src;
} while(*src++ != 0);
}
与您的代码的差异
copy
保留 src
的副本
- 在
res
得到src
的第一个单词后,吃掉src
后面的空格
- 然后将
src
的剩余部分复制到copy
(指向原来的src
)
还有一个使用索引的解决方案。 src[i]
,但这里我们只是按照src
从头到尾递增。
我有一个接收两个字符数组(资源和结果)并更改它们的函数。结果将只是第一个词和之前所有内容的资源,第一个词除外。第一个词写入结果,但在资源中删除了一些空格...
void selectFirstWord(char *src, char* res) {
int i = 1;
while(*src != ' ' && *src != 0) {
*(res++) = *(src++); //посимвольное копирование из src в res
i++;
}
while(*src != 0) {
*(src++) = *(src+i);
}
*res = 0;
}
您可以保留一份原件src
void selectFirstWord(char *src, char* res) {
char *copy = src; // keep copy
while(*src != ' ' && *src != 0) {
*res++ = *src++;
}
*res = 0; // "close" res
while(*src == ' ') src++; // eat spaces after the word
// Copy the rest of src to `copy`
do {
*copy++ = *src;
} while(*src++ != 0);
}
与您的代码的差异
copy
保留src
的副本
- 在
res
得到src
的第一个单词后,吃掉src
后面的空格
- 然后将
src
的剩余部分复制到copy
(指向原来的src
)
还有一个使用索引的解决方案。 src[i]
,但这里我们只是按照src
从头到尾递增。