在主程序中正确包含功能

时间:2014-12-21 11:48:41

标签: c

昨天我已经问了一个关于同一个程序的问题(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; 
}

1 个答案:

答案 0 :(得分:4)

你的代码非常破碎,甚至无法编译。以下是一些修复:

  • char copying(char *src_file, char *dst_file) - 您必须指定参数的数据类型。
  • char copying(char *src_file, char *dst_file) { ...} - 不要忘记功能周围的括号
  • 您首先必须在src_file
  • 中声明变量dst_filemain
  • 不要copying函数中声明它们,因为它们已经定义为您的参数
  • 您正在返回一个char指针,而copying的函数定义表示它只返回一个&#39; char&#39;。

现在,如果src_file函数中的dst_filemain 已分配 char指针,那么您正在正确调用该函数。

我没有查看您的所有代码,因此可能会有更多错误。尝试运行编译器,看看你会得到什么错误。