Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C程序在fprintf时冻结(大量数据)_C - Fatal编程技术网

C程序在fprintf时冻结(大量数据)

C程序在fprintf时冻结(大量数据),c,C,我正试图将剪贴板内容写入文件,但由于某种原因,程序被冻结 FILE *fp; fp = fopen("tmp.code","w"); fprintf(fp,getclip()); /*writes*/ fclose(fp); char* getclip(){ HANDLE clip; if (OpenClipboard(NULL)){ clip = GetClipboardData(CF_TEXT); CloseClipboard();

我正试图将剪贴板内容写入文件,但由于某种原因,程序被冻结

FILE *fp;
fp = fopen("tmp.code","w");
fprintf(fp,getclip()); /*writes*/

fclose(fp);

char* getclip(){

    HANDLE clip;
    if (OpenClipboard(NULL)){
        clip = GetClipboardData(CF_TEXT);
        CloseClipboard();
        return clip;
    }

}
我做错了什么

谢谢函数
getclip()
返回一个
int
,而
fprintf
需要指向char的指针。它试图访问无效的内存位置:您将
句柄返回为
int
,然后
fprintf
将其解释为要读取字符的内存地址


请查看编译器错误和警告并修复代码。

因为
getclip()
返回
int
,并且
fprintf()
的签名不支持命名参数中的
int
。。。我认为您的错误在于忽略了编译器的输出。您希望
fprintf
将整数作为格式字符串做什么?fprintf的函数签名是int-fprintf(FILE*stream,const-char*format,…);你以为这会有魔力。您从未编写任何代码来提取剪贴板内容,更不用说将其写入文件了。您确实获得了它们的句柄,但您从未编写过任何代码来使用该句柄执行任何操作。@GabrielGray那么您的问题应该是问为什么当前的代码可以工作。这真是个谜。我的最佳猜测——句柄恰好是指向剪贴板中某些数据的指针——纯属运气。我已经编辑了代码,这也是同样的问题。。。与小数据一起工作,大数据将不起作用