#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char * odd(const char * S, char * dest);
int main()
{
char * source = "abcdefghijklmnopacegiacegi";
unsigned int length = strlen(source);
char dest[length];
printf("%s\n",odd(source, dest));
}
char * odd(const char * source, char * dest)
{
int count = 0;
unsigned int length = strlen(source);
for(int i = 0; i < length; i++)
{
if( (source[i] %2 )!= 0)
{
dest[count] = source[i];
count++;
}
}
return dest;
}
dest 的大小会增加,并且对于 source 长度之后的任何值都会产生垃圾
您必须手动添加结尾\0
到字符串,即在末尾add
,你必须添加:
dest[count] = '\0';
你知道,C 中字符串的长度是通过搜索来计算的\0
特点。您必须在每个 C 字符串的末尾包含其中之一。如果不是,则该字符串可能包含任何垃圾,直到第一个\0
将被打印。
最后创建的时候dest
,您还必须将保留空间的长度增加一以容纳结尾的 0 字符。这strlen
不计算结尾 0 字符。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)