对于这段代码:
int i=0; char **mainp;
for(i=0;i<2;++i)
{
mainp[i]=malloc(sizeof(char)*200);
if(!scanf("%[^#],#",mainp[i]))
break;
if(i<2)
scanf("%[^#],#",mainp[i]);
}
GCC 发出警告:
warning: implicit declaration of function ‘scanf’
warning: incompatible implicit declaration of built-in function ‘scanf’
warning: ‘mainp’ may be used uninitialized in this function
我在运行时遇到了段错误
输入:(P>Q),(Q>R),-R#-P 输出: (P>Q),(Q>R),-R (空槽)
我希望给我 (P>Q),(Q>R),-R -P//我应该在哪里修复我的代码,以便它给我预期的 //输出
最佳答案
问题#1:
warning: ‘mainp’ may be used uninitialized in this function
首先需要为数组的数组分配内存。
char **mainp = malloc(sizeof(char*)*2);
问题#2:
warning: implicit declaration of function ‘scanf’
warning: incompatible implicit declaration of built-in function ‘scanf’
您需要在文件顶部包含 stdio.h
:
#include <stdio.h>
问题 #3:(未包含在您的编译警告中)
记住释放分配的数组成员和数组地址的数组。
关于c - "Implicit declaration"警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2866520/