这是一个C的命令行程序 把argv[2]文件的内容复制到argv[1]文件。编译没问题但是运行就崩溃谁能帮我看你看

这是一个C的命令行程序 把argv[2]文件的内容复制到argv[1]文件。编译没问题但是运行就崩溃谁能帮我看你看,第1张

//#include "stdafx.h"//If the vc++6.0, with this line.

#include "stdio.h"

#include "string.h"

#include "stdlib.h"

int main(int argc,char *argv[]){

    FILE *fp1,*fp2

    char temp[101]

    int i

    if(argc<3){

        fputs("error",stderr)

        exit(1)

    }

    if((fp2=fopen(argv[2],"r"))==NULL){//这里少了括号,改了

        printf("Fail to open %s.\n",argv[2])

        exit(2)

    }

    if((fp1=fopen(argv[1],"w"))==NULL){//这里也少了括号,改了

        printf("Fail to open %s.\n",argv[1])

        exit(2)

    }

    printf("%s,%s\n",argv[1],argv[2])

  拍搜  袭纤printf("hh\n")

    while((i=fread(temp,sizeof(char),100,fp2))>0){//少了一对(),改了

        fwrite(temp,i*sizeof(char),1,fp1)

        printf("hh\n")

    }

    fclose(fp2)

    fclose(fp1)

   袭禅历 printf("Done\n")

    return 0

}

这样就没有问题了……

程序铅闭存在一些问题,具体如下:

所有的float最好改为double,不然会发生精度损答备失问题。因为涉及到浮点数计算,为保证计算精度,使用double比较保险。改的时候记得把“%f”占位符改为“%lf”。

程序中的“/n”改为“\n”,转义符号要使用反斜线转义。

fun函数的声明最好写到外层,而不是写在funl函数中。

main函数中调用fun函数时,参数个数少了一个,并且末尾没有加分号结束。这是语法错误,会直接导致编译失败。

main函数的返回值最好是int,默认返回0。

由于不清楚三个读取的txt文件是什么,不清楚读文件后的执行逻辑是否正确。打开文件时没有判断文件是否打开成功,若文件不存在,会导致程序直接崩溃。

fun函数没有声明返回值,应该声明为void。

fun1函数声明了返回值,但是实际并没有返回,而且没槐举裂有使用到返回值,因此返回值类型可改为void。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12415682.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存