【发布时间】:2011-04-20 15:59:04
【问题描述】:
你好! 我陷入了一个 ANSI C 问题,我认为这应该是微不足道的(至少在任何现代语言中都是这样:/)。
我的脚本的(临时)目标是拆分一个包含 6 个字符(“123:45”)的字符串(char 数组),它表示时间戳分钟:秒(对于音频文件,因此可以有 120 分钟)只需几分钟和几秒钟。
我尝试了几种方法 - 一种是寻找“:”的通用方法,另一种是硬编码的,只是通过索引分割字符串,但似乎都不起作用。
void _splitstr ( char *instr, int index, char *outstr ) {
char temp[3];
int i;
int strl = strlen ( instr );
if ( index == 0 ) {
for ( i = 0; i < 3; ++i ) {
if ( temp[i] != '\0' ) {
temp[i] = instr[i];
}
}
} else if ( index == 1 ) {
for ( i = 6; i > 3; i-- ) {
temp[i] = instr[i];
}
}
strcpy ( outstr, temp );
}
另一个“有趣”的事情是 char[3] 的字符串长度是 6 或 9,实际上从来没有 3。这有什么问题?
【问题讨论】:
-
家庭作业?没问题,请告诉我们
-
您的代码尝试将 3 个字符放入
temp(它可以容纳),然后在“字符串”函数中使用temp。字符串需要以空字节终止。您的temp没有空字节空间。