如何使用非ascii字符的stat文件

时间:2012-04-18 17:26:37

标签: c file-io utf-8 character-encoding

对于普通文件路径,我可以使用stat并获取它的大小。当路径包含非ascii名称,如C:\ temp \ sमानकe \ app.log时,它不起作用。

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 *。从命令提示符接收的路径实际上并不是有效文件。

enter image description here

1 个答案:

答案 0 :(得分:2)

假设您使用的是Windows,请尝试使用GetShortPathNameW获取短路径名称(如果存在),然后将短名称传递给stat()