C中的文件操作

时间:2013-03-12 12:33:50

标签: c file mkdir

我使用简单的“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'.*

3 个答案:

答案 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)

这是因为您只有一个charc中的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;
}