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那么您的问题应该是问为什么当前的代码可以工作。这真是个谜。我的最佳猜测——句柄恰好是指向剪贴板中某些数据的指针——纯属运气。我已经编辑了代码,这也是同样的问题。。。与小数据一起工作,大数据将不起作用