我使用简单的“C”代码执行以下操作:
1)从.txt文件中读取。
2)根据.txt文件中的字符串,将创建一个目录。
我无法执行第2步,因为我不清楚类型转换。
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <direct.h>
int main()
{
char ch, file_name[25];
FILE *fp;
//printf("Enter the name of file you wish to see\n");
//gets(file_name);
fp = fopen("input.txt","r"); // read mode
if( fp == NULL )
{
perror("Error while opening the file.\n");
exit(EXIT_FAILURE);
}
printf("The contents of %s file are :\n", file_name);
while( ( ch = fgetc(fp) ) != EOF )
printf("%c",ch);
if( _mkdir(ch ) == 0 )
{
printf( "Directory successfully created\n" );
printf("\n");
}
fclose(fp);
return 0;
}
这是错误:
*error #2140: Type error in argument 1 to '_mkdir'; expected 'const char *' but found 'char'.*
答案 0 :(得分:3)
是的,编译器是对的。
您正在将字符c
传递给_mkdir
,而不是字符串。
你应该从文件中读取字符串并将其存储到file_name
(我猜你忘了)然后
_mkdir(file_name);
见下文:
#include <stdio.h>
#include <stdlib.h>
#include <direct.h>
int main()
{
char file_name[25];
FILE *fp;
fp = fopen("input.txt", "r"); // read mode
if (fp == NULL)
{
perror("Error while opening the file.\n");
exit(EXIT_FAILURE);
}
fgets(file_name, 25, fp);
_mkdir(file_name);
fclose(fp);
return 0;
}
答案 1 :(得分:2)
这是因为您只有一个char
(c
中的fgetc
代表char
)而_mkdir
想要一个字符串(即{{1} }})。
您应该使用fgets
来阅读输入。
答案 2 :(得分:1)
如果您不想使用fgets,那么您可以使用它。
#include <stdio.h>
#include <stdlib.h>
#include <direct.h>
int main()
{
char file_name[25];
String str;
FILE *fp;
char ch;
int i=0;
fp = fopen("input.txt", "r"); // read mode
if (fp == NULL)
{
perror("Error while opening the file.\n");
exit(EXIT_FAILURE);
}
while( ( ch = fgetc(fp) ) != EOF ){
printf("%c",ch);
file_name[i];
i++
}
str=file_name;
_mkdir(str);
fclose(fp);
return 0;
}