C:readdir的d_名称无法转换为字符串

C:readdir的d_名称无法转换为字符串,c,directory,operating-system,filesystems,system-calls,C,Directory,Operating System,Filesystems,System Calls,我的代码如下: #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&

我的代码如下:


#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;,当我试图编译时,我得到了错误消息error:invalid initializer


知道怎么修理吗?似乎我需要为char myStr[256]选择另一种类型,但我不确定应该选择哪种类型…

数组的初始值设定项必须是文本,它不会从变量复制

要复制字符串,请使用strcpy


请注意,我可以通过使文件名超过255个字符来破解你的程序。我认为你的文件名不能超过255个字符。谷歌同意。不过你很幸运。也许明年他们会升级到511!
char myStr[256];
strcpy(myStr, myFile->d_name);
printf("%s\n", myStr);