c - 如何安全解析制表符分隔的字符串?

标签 c parsing csv

如何安全解析制表符分隔符字符串?例如: 测试\tbla-bla-bla\t2332 ?

最佳答案

strtok() 是一个标准函数,用于解析带有任意定界符的字符串。但是,它不是线程安全的。您选择的 C 库可能有一个线程安全的变体。

另一种符合标准的方式(刚刚写的,未测试):

#include <string.h>
#include <stdio.h>

int main()
{
    char string[] = "foo\tbar\tbaz";
    char * start = string;
    char * end;
    while ( ( end = strchr( start, '\t' ) ) != NULL )
    {
        // %s prints a number of characters, * takes number from stack
        // (your token is not zero-terminated!)
        printf( "%.*s\n", end - start, start );
        start = end + 1;
    }
    // start points to last token, zero-terminated
    printf( "%s", start );
    return 0;
}

关于c - 如何安全解析制表符分隔的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3839664/

相关文章:

parsing - 如何使用 Go 解析方法或函数中的语句

php - 如何使用 corcel 在 wordpress 中获取选定的主页?

R:解压缩大型压缩 .csv 产生 "zip file is corrupt"警告

python - 如何使用列名列表对数据框进行排序

c# - 如何使用 RegEx 进行高级 URL 解析?

python - 如何正确写入CSV文件?

c - 如何从文件中读取矩阵?

c - 需要 strlen 帮助

java - 4 个进程的信号量执行

c++ - 如何使用指针从不同的函数访问局部变量?