在学习了一些教程并阅读有关函数指针的内容后,我了解到显然在ISO C中为函数指针指定了一个void指针是未定义的,有没有办法解决我在编译期间收到的警告(例如更好的编码方式)或我应该忽略它吗?
警告:
ISO C forbids assignment between function pointer and 'void *' [-pedantic]
Run Code Online (Sandbox Code Playgroud)
示例代码:
void *(*funcPtr)();
funcPtr = GetPointer();
Run Code Online (Sandbox Code Playgroud)
GetPointer是一个返回void指针EG的函数
void *GetPointer();
Run Code Online (Sandbox Code Playgroud) 我是一名软件工程专业的学生,我正在休假,为了在下学期学习更好,我一直在编写各种控制台应用程序来练习.但是我遇到了一个问题,我需要从用户那里得到整数输入.我一直在使用fgets来获取字符串stdin然后使用sscanf来获取整数(已经工作正常)但是如果用户输入的数量超过了我的缓冲区大小,则会在流中保留尾随字符(包括跳过我的下一个调用的换行符)fgets).我环顾四周,发现大多数人似乎都认为while(getchar() != '\n');这会导致我出现问题,因为如果没有换行字符,就会发生不必要的输入扫描.
例:
int ch;
char* buffer = (char*)malloc(BUFSIZ*sizeof(char));
while((ch = getchar()) != '\n' && ch != EOF);
fgets(buffer,BUFSIZ*sizeof(char),stdin);
Run Code Online (Sandbox Code Playgroud)
如果缓冲区不是太小而流中没有尾随字符,则会getchar()导致输入不必要.
输出:
A
A
You typed A
Intended Output:
A
You typed A
Run Code Online (Sandbox Code Playgroud)
我希望我说得够清楚,我感谢任何帮助.