Ala*_*min 0 c dynamic-memory-allocation
为什么错误
#include <stdio.h>
int main(void)
{
int *p, size, i;
FILE *fp;
fp = fopen("input.txt","r");
fscanf(fp, "%d", &size);
p = (int*)malloc(size*sizeof(int)); //error
for (i = 0; i <size; i++)
fscanf(fp, "%d", &p[i]);
for (i = size-1; i>= 0; i--)
printf("%d\n", p[i]);
free(p);
fclose(fp);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我在ubuntu上使用"Geany"
并在Geany编译器上:
fileName.c:11:2:警告函数'malloc'的隐式声明[-Wimplicit-function-declatation] fileName.c:11:12:警告:内置函数'malloc'的不兼容隐式声明[默认启用] fileName.c:18:12:warning:函数'free'的隐式声明[-Wimplicit-function-declaration] fileName.c:18:12:警告:内置函数'free'的不兼容隐式声明[enabled-by默认]编译成功完成
你错过了以下标题包括:
#include <stdlib.h>
Run Code Online (Sandbox Code Playgroud)
原型malloc和for free在stdlib.h你错过的头文件中定义.
如果您不确定要为某些标准C函数包含哪些头文件,您可以随时使用man它来计算出来.
对于这种情况,man malloc会显示要包含的必需头文件.
顺便说一下,在你的代码中,你没有检查是否fp已经过NULL了fopen.
fopen 如果文件不存在或您没有打开文件的权限(在您的情况下阅读),可以并且将会失败.
fp = fopen("input.txt","r");
if (fp == NULL)
{
printf("Error opening input.txt\n");
return -1;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
249 次 |
| 最近记录: |