【发布时间】:2012-04-18 17:26:36
【问题描述】:
对于普通文件路径,我可以使用 stat 并获取它的大小。当路径包含 C:\temp\sमानकe\app.log 等非 ascii 名称时,它不起作用。
int main(int argc, char * argv[])
{
struct stat FileAttrib;
if (stat(argv[1], &FileAttrib) < 0) {
printf("File Error Message = %s\n", strerror(errno));
}
else
{
printf("File size %d\n", FileAttrib.st_size);
}
return 0;
}
stat 只需要 char *。从命令提示符收到的路径并不是真正的有效文件。
【问题讨论】:
-
如果您能够以其他方式打开文件,您可以随时在文件描述符上使用
fstat()。 -
我的mingw终端,我的编辑都不允许我输入这样的字符。哈哈:)
-
你确定你交出正确编码和转义的文件名吗?使用“ls 'C:\temp\sमानकe\app.log'”进行测试。
-
@Pavan Manjunath:我用过薄荷。查看输出。
-
您的
main被声明为采用 ASCII 参数,因此您的非 ASCII 命令行甚至无法完整地转换为main。
标签: c file-io utf-8 character-encoding