c - ANSI C 拆分字符串

标签 c string split ansi

你好! 我被困在一个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 函数返回成功读取的项目数,因此检测错误也很容易。

工作示例:http://ideone.com/vVoBI

关于c - ANSI C 拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5733235/

相关文章:

嵌入式软件的调用树

Swift:字符串中的子字符串(整数/数字)

Python — 检查字符串是否包含西里尔字符

c++ - 如何从 C :\Windows\System32 folder? 执行 Windows System() 命令

比较C中的文字空字符串

c++ - 使用 fgets() 时出错

javascript - 使用基于 HR 标签的 Javascript/JQuery 在 div 中拆分 HTML

android - 当名称为数字时,Resources.getIdentifier() 具有意外行为

r - 如何将列表值列拆分为多列?

Java - 用反斜杠 (\) 分割字符串