我有一個問題,內容如下:複製字符串數組實現Ç
寫函數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,會因其他原因而關閉。有許多。許多對這種複合條件基礎知識的誤解。 –