ANSI C拆分字符串

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.这有什么问题?

Ath*_*ick 6

如何使用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