2013-03-12 41 views
-1

我正在使用简单的'C'代码来执行以下操作: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'.* 
+1

我对你感到困惑......“mkdir”需要一个字符串,而你给它一个字符有点困惑。编译器在说同样的事情... – Mike 2013-03-12 12:39:02

回答

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; 
} 
+0

好的,我加了这个,仍然不起作用 'while((ch = fgetc(fp))!= EOF) printf(“%c”,ch); \t char str [25] = ch;如果(_mkdir(str)== 0) { printf(“成功创建的目录\ n”); }' – highlander141 2013-03-12 12:52:12

+1

@ highlander141,为什么不使用'fgets()'从文件读取? – 2013-03-12 12:56:11

2

这是因为你只能有一个char(在cfgetc代表char),而_mkdir想要一个字符串(即char *)。

您应该使用fgets来读取输入。

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; 
}