gpt4 book ai didi

c - 不同编译器的 strtok() 行为不同

转载 作者:太空宇宙 更新时间:2023-11-04 08:30:48 27 4
gpt4 key购买 nike

我写了一个程序,它根据这种格式解析一个字符串:

somethingsomething:number:

在我的电脑上,这个程序运行完美。然而,一旦我上传了代码并在学校的计算机上编译了它,strtok() 就会有不同的行为。

例如,对于此字符串:p2test/f4.txt:1:,在我的计算机上,第一个标记将是 p2test/f4.txt。但是,在学校的计算机上, token 最终为 p2test/f4.t

这是代码段:

            char *token;
char delim[1] = ":";

if ((token = strtok(tmp_string, delim)) != NULL) {
...
}

在这里,tmp_string 将是 p2test/f4.txt:1:

这里是我电脑的编译版本:gcc version 4.9.1 (Ubuntu 4.9.1-16ubuntu6)

这里是我校的编译器版本:gcc version 4.8.1 20130909 [gcc-4_8-branch revision 202388] (SUSE Linux)

最佳答案

另一个问题是你在这里有一个内存覆盖:

char delim[1] = ":";

字符串中有两个字符,而不是 1。这样做更安全:

char delim[] = ":";

关于c - 不同编译器的 strtok() 行为不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28468017/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com