从C上的字符串中删除第一个单词
我有一个函数,它接收两个字符数组(资源和结果)并更改它们。结果将只是第一个单词和资源,除了第一个单词之外。第一个单词写入结果,但在资源中删除了一些空格从C上的字符串中删除第一个单词,c,string,words,C,String,Words,我有一个函数,它接收两个字符数组(资源和结果)并更改它们。结果将只是第一个单词和资源,除了第一个单词之外。第一个单词写入结果,但在资源中删除了一些空格 void selectFirstWord(char *src, char* res) { int i = 1; while(*src != ' ' && *src != 0) { *(res++) = *(src++); //посимвольное копирование из src в res i++; }
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
。请用英语写这篇文章……或者在@RingØ上发布我做到了。*(src++)=*(src+i)代码>这里没有序列点。。。