昨天我已经问了一个关于同一个程序的问题(copy content of file in reverse order), 但现在我不知道如何在主程序中正确调用第二个函数。
#include<stdio.h>
#include<string.h>
void reverse(char line[])
{
int i;
int length;
char temp;
if (line == NULL)
return;
length = strlen(line);
for (i = 0 ; i < length / 2 + length % 2 ; ++i)
{
if (line[i] == line[length - i - 1])
continue;
temp = line[i];
line[i] = line[length - i - 1];
line[length - i - 1] = temp;
}
return;
}
char copying(char *src_file, char *dst_file) {
fgets(src_file, sizeof(src_file), stdin); reverse(src_file);
if( (src_file = fopen(src_file, "r")) == NULL )
{
printf("ERROR: Source File %s Failed To Open...\n",src_file);
return(-1);
}
fgets(dst_file, sizeof(dst_file), stdin);
if( (dst_file = fopen(dst_file, "w+")) == NULL )
{
fclose(src_file);
printf("ERROR: Destination File %s Failed To Open...\n",dst_file);
return(-2);
}
int ch;
while( (ch = fgetc(src_file)) != EOF )
{
fputc(ch, dst_file);
}
fclose(src_file);
fclose(dst_file);
return dst_file;
}
int main()
{
char src_file[200], dst_file[200];
printf("Enter Source File Name:\n");
fgets(src_file, sizeof(src_file), stdin);
printf("Enter Destination File Name:\n");
fgets(dst_file, sizeof(dst_file), stdin);
*dst_file = copying(src_file, dst_file);
return 0;
}
答案 0 :(得分:4)
你的代码非常破碎,甚至无法编译。以下是一些修复:
char copying(char *src_file, char *dst_file)
- 您必须指定参数的数据类型。char copying(char *src_file, char *dst_file) { ...}
- 不要忘记功能周围的括号src_file
dst_file
和main
copying
函数中声明它们,因为它们已经定义为您的参数char
指针,而copying
的函数定义表示它只返回一个&#39; char&#39;。现在,如果src_file
函数中的dst_file
和main
已分配 char
指针,那么您正在正确调用该函数。
我没有查看您的所有代码,因此可能会有更多错误。尝试运行编译器,看看你会得到什么错误。