C &引用;隐式声明“;警告
对于此代码:C &引用;隐式声明“;警告,c,include,header,segmentation-fault,C,Include,Header,Segmentation Fault,对于此代码: 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]); } 我在运行时遇到了一个分段错误 输入:(p>Q),(Q>R),-R#-p 输出: (P>Q),(Q>R),-R (空插
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]);
}
我在运行时遇到了一个分段错误
输入:(p>Q),(Q>R),-R#-p
输出:
(P>Q),(Q>R),-R
(空插槽)
我想给我
(P>Q),(Q>R),-R
-P//我应该在代码中的什么位置进行修复,以使其提供预期的
//输出问题1:
警告:此函数中可能未初始化就使用了“mainp”
首先需要为数组数组分配内存
char **mainp = malloc(sizeof(char*)*2);
问题#2:
警告:函数“scanf”的隐式声明警告:内置函数“scanf”的隐式声明不兼容 您需要在文件顶部包含
stdio.h
:
#include <stdio.h>
#include <stdio.h>
#包括
问题#3:(未包含在编译警告中)
请记住释放已分配的数组成员和数组地址的数组。gcc希望在文件开头有这一行:
#include <stdio.h>
#include <stdio.h>
你不应该在没有声明的情况下使用函数;您使用了
scanf
,但在代码中没有声明scanf
。由于它是一个标准库函数,它是在一个标准头文件中声明的,stdio.h
,因此您只需要包含它:
#include <stdio.h>
#包括
Brian's适用于其他部分可能重复的