我有一个问题,内容如下:复制字符串数组实现Ç
写函数int tokenCopy(字符* DEST,常量字符* SRC,INT destSize)从给定的源串拷贝的字符SRC到给定的目标缓冲区DEST,这是大小destSize的,直到:
串发生源的端部,或
目标缓冲区已满(允许将要需要的终止子),或
a sp ace字符在输入字符串中找到
以先到者为准。如果因为找到空格而完成复制,则不会复制该空间。目标字符串必须始终正确终止。如果源字符串的目标地址空间不足,则目标字符串必须是源字符串正确终止的前导子字符串。
返回值是复制的字符数,不包括终止空字节。
这是我尝试迄今:
int tokenCopy(char* dest, const char* src, int destSize)
{
int the_slab = 0;
for (; *src != ('\0' | ' '); the_slab++)
{
if (*src == (32 | 0))
{
*dest = '\0';
return the_slab;
}
*dest = *src;
dest++;
src++;
}
*dest = '\0';
return the_slab;
}
然而,当被测试的失败:
char buff[10];
int n = tokenCopy(buff, "This", 10);
printf("%d '%s'\n", n, buff);
,因为它返回,而不是4 为什么不终止后7号它处理了前四个字母?我不明白为什么src没有终止字节?
我做了什么错?在概念上我不了解什么?
谢谢!
的可能重复的[执行块变量是否不一些具体值之一(http://stackoverflow.com/questions/26337003/execute-block-if-a-variable-是不是一个特定值) – Barmar
虽然,建议的d重复看起来像重复,答案真的很混乱,并没有解决一个简单的问题。更糟糕的是,这个例子比较了诸如'“x”'的c字符串和'=='运算符! –
谁在乎?问题在于基本的语言结构,如果不是dup,会因其他原因而关闭。有许多。许多对这种复合条件基础知识的误解。 –