Asm*_*iel 1 c string split ansi
嘿!我坚持使用ANSI C问题,我认为这应该是非常简单的(至少在任何现代语言中都是如此:/).
我的脚本的(临时)目标是分割一个6个字符("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 );
}
Run Code Online (Sandbox Code Playgroud)
另一个"有趣"的事情是char [3]的字符串长度是6或9而实际上从来没有3.这有什么问题?
如何使用sscanf().尽可能简单.
char time[] = "123:45";
int minutes, seconds;
sscanf(time, "%d:%d", &minutes, &seconds);
Run Code Online (Sandbox Code Playgroud)
如果您可以确定时间字符串语法始终有效,则此方法效果最佳.否则你必须添加检查.成功时,sscanf函数返回成功读取的项目数,因此也很容易检测到错误.
工作示例:http://ideone.com/vVoBI