【发布时间】:2015-10-29 12:02:50
【问题描述】:
我目前正在从事一个计算机科学项目,并且在一个我似乎无法解决的非常具体的案例中完全正常工作。代码的目标是编写一个函数 int tokenCopy(char* dest, const char* src, int destSize),它将字符从给定的源字符串 src 复制到给定的目标缓冲区 dest,其大小为 destSize,直到:
出现源字符串的结尾,或者 目标缓冲区已满(允许需要的终止符),或在输入字符串中找到空格字符
以先到者为准。如果由于找到空间而完成复制,则不复制该空间。目标字符串必须始终正确终止。如果源字符串的目标空间不足,则目标字符串必须是源字符串的正确终止的前导子字符串。
返回值是复制的字符数,不包括终止的空字节。
测试的形式是:
char buff[3];
int n = tokenCopy(buff, "This is a string", 3);
printf("%d '%s'\n", n, buff);
这是我目前的代码:
#include <stdio.h>
int tokenCopy(char* dest, const char* src, int destSize){
int new_value = 0;
int i=0;
for (;*src != ' '; new_value++){
destSize = 1;
return new_value;
}
for (; *src != '\0' && *src!= ' '; new_value++)
{
while (i < destSize-1 && *src!= '\0'){
*dest = *src;
dest++;
src++;
new_value++;
i++;
*dest = '\0';
}
return new_value;
}
return new_value;
}
但是在以下测试的情况下:
char buff[10];
int n = tokenCopy(buff, " ", 10);
printf("%d '%s'\n", n, buff);
输出应该是:
0 ''
但是,我的代码输出零,然后是包含不同字母的语音标记,然后是我尝试对代码进行的每次更改时带菱形的问号。作为参考,我正在使用带有 Geany IDE 的 linux。
对于这个问题的任何帮助将不胜感激。
【问题讨论】:
-
第一个 for 循环怎么样?