为什么当我在 Android 中使用带冒号的文件名时,fopen 会打出 errno:22

Why does fopen thown errno:22 when I use the file name with colon in Android?

本文关键字:fopen 文件名 errno Android 为什么      更新时间:2023-10-16

当我使用带有冒号的文件名时,例如2012-12-12 12:00:00,fopen将失败,错误Invalid argument。如果我将文件名更改为2012-12-12 12-00-00它就会正确。错误Invalid argument是什么意思?我尝试通过 adb shell 在 Android 中运行命令,我尝试touch名称中带有冒号的文件,但失败了,但是如果我使用 vi 来新建名称中带有冒号的文件,它是正确的。这是怎么回事?我已经检查了路径,没有问题。

errno = 0;
FILE *fp = fopen("/sdcard/2012-12-12 12:00:00", "a");
if (fp == NULL) {
    strerror(errno)   // Invalid argument
    return;
}
fprintf(fp, "%s", "something");
fclose(fp);
我想出现

这个问题是因为冒号:在 *NIX 系统下用作路径列表分隔符(例如,分隔 PATH 环境变量中列出的路径名)。可能因此,一些内部处理出错了。