C:readdir的d_name无法转换为String

问题描述

我的代码如下:


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

int main(void) {
  DIR *myDir;
  struct dirent *myFile;

  myDir = opendir("/");
  while ((myFile = readdir(myDir)))
  {
    char myStr[256] = "foo";
    printf("%s\n",myFile->d_name);
    printf("%s\n",myStr);
  }
  closedir(myDir);
  return (0);
}

上面的代码有效。但是后来我尝试用char myStr[256] = "foo";替换char myStr[256] = myFile->d_name;,并且在尝试编译时收到错误消息“错误:无效的初始化程序”。

任何想法如何解决?看来我需要为char myStr[256]选择另一种类型,但是我不确定应该选择哪种类型...

解决方法

数组的初始化程序必须是文字,它不会从变量中复制。

要复制字符串,请使用strcpy()

char myStr[256];
strcpy(myStr,myFile->d_name);
printf("%s\n",myStr);