你好! 我被困在一个ANSI C 问题上,我认为这个问题应该很简单(至少在任何现代语言中都是这样:/)。
我的脚本的(临时)目标是拆分一个 6 个字符的字符串(char 数组)(“123:45”),它表示时间戳分钟:秒(对于音频文件,有 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。这有什么问题吗?
最佳答案
如何使用 sscanf()
.越简单越好。
char time[] = "123:45";
int minutes, seconds;
sscanf(time, "%d:%d", &minutes, &seconds);
如果您可以确定时间字符串语法始终有效,则此方法效果最佳。否则你必须为此添加检查。成功时,sscanf 函数返回成功读取的项目数,因此检测错误也很容易。
关于c - ANSI C 拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5733235/