-1

私は単純な「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'.*
4

3 に答える 3

3

はい、コンパイラは正しいです。

c文字列ではなく に charを渡して_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;
}
于 2013-03-12T12:37:00.790 に答える
2

これは、文字列 (つまり ) が必要なのに対し、単一char( cinfgetcは を表します)しかないためです。char_mkdirchar *

入力を読み取るには、おそらくfgets代わりに使用する必要があります。

于 2013-03-12T12:36:39.170 に答える
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;
}
于 2013-03-12T13:05:52.447 に答える