C语言问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言问题相关的知识,希望对你有一定的参考价值。
我的程序也出现 implicitly declaring library function 'printf' with type 'int (const char *,...)',你知道怎么回事吗
参考技术A 这句话提示的意思是:用类型“int (const char *,...)”隐式声明了库函数printf。该提示的背景知识:因为printf这一类库函数太常用了,所以编译器在编译的时候,发现源文件中并没有声明printf这个函数就直接使用了它,那么编译器就会为printf函数隐式生成一个声明。你那个编译器提示你,它为printf生成的隐式声明是:int printf(const char *, ...)
该提示后果:通常情况下,这个提示只是一个warning,而不是error,编译仍然可以通过。
解决方案:要消除这个提示,只要加上printf的声明就行了。printf函数是一个库函数,它的声明在stdio.h文件里。所以,你只要在源文件中#include <stdio.h>就可以了。本回答被提问者和网友采纳 参考技术B printf使用不当吧。 参考技术C 少了头文件:
#include <stdio.h>
C语言问题?
下面这段代码只能记录用户输入的数字,不能记录字母和特殊符号,怎么改才能记录数字、字母和特殊符号?
for(char ch='0';ch<='9';ch++)
if(GetAsyncKeyState(ch)&0x8000)
while(GetAsyncKeyState(ch)&0x8000)
Sleep(1);
printf("用户输入的是: %c\n",ch);
你这个程序是捕捉0到9的按键状态,按下再松开时才会记录,想要识别所有按键,把for循环范围扩大。
比如for(charch=32;ch<=127;ch++)这样就包含了特殊符号及大小写字母还有数字。
但是,这个代码是有问题的!
一、你这个代码需在键位已经按下后启动才能识别,否则启动时没有按下对应键位,程序就结束了。要嵌套死循环,让其一直检测。
二、直接扩大ASCII区间,像上面的那样32~127,识别字母区间会被防毒软件直接判断为病毒!!。
三、GetAsyncKeyState不是C语言库函数,是window的函数,换其它操作系统就失效。
GetAsyncKeyState返回值最高位为1则说明对应ch的键被按下,所以这里用&0x8000来判断最高位。
四、想要捕获其它软件界面内容还有很多方法,比如:
1、通过windowAPI函数FindWindow来获取窗口句柄。
2、遍历窗口下控件句柄,找到输入框句柄。
3、通过窗口句柄找到进程id(GetWindowThreadProcessId函数),再通过id获取进程句柄(OpenProcess函数)。
4、向目标进程申请内存(VirtualAllocEx),再通过PostMessage函数异步发送消息获取目标控件内的内容(具体消息要结合控件类型,另外注意PostMessage是异步执行)。
具体自行查阅资料,一言两语说不清,上面步骤需先搞懂window消息机制。
注意:以上方法依然只限window系统,且有数据保护的控件无法获取。
五、或简单暴力的方法,直接写个定时截图,只要硬盘够不停桌面截图。
但不论写什么程序,和装摄像头一样,终究都会被发现。!!!!!!!!!!!!!
参考技术A char c;while(1)
c=getchar();
printf("用户输入的是: %c\n",c);
//您试试 参考技术B 我去我这小学毕业的竟然点进来了,c语言并不难,但是你得有一定的英语基础,要不你都看不懂单词啥意思,慢慢来吧,年轻人,一点一点的,好好的,多从网上学一点高级的编程技能,越来越好,越来越快的编程师属于你! 参考技术C 试试改成这样:
for(char ch=0;ch<=127;ch++)
以上是关于C语言问题的主要内容,如果未能解决你的问题,请参考以下文章