问题描述
我的代码如下:
#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);