程序1.1分配、释放存储空间
优化:(运行环境依然是vs2010)
方法二:如果存储空间不足,调用malloc会使申请失败。
#include<stdio.h>
#include <stdlib.h>
int main()
{
int *pi;
float *pf;
//如果存储空间不足,调用malloc会使申请失败
//if (NULL==(pi=(int *)malloc(sizeof(int)))||NULL==(pf=(float *)malloc(sizeof(float))))
//{
// fprintf(stderr,"Insufficient memory");
// exit(EXIT_FAILURE);
//}
if (!(pi=(int *)malloc(sizeof(int)))||!(pf=(float *)malloc(sizeof(float))))
{
fprintf(stderr,"Insufficient memory");
exit(EXIT_FAILURE);
}
*pi=1;
*pf=1.089;
printf("%d %f\n",*pi,*pf);
free(pi);
free(pf);
system("pause");//解决窗口一闪而过
return 0;
}
方法三:定义宏语句,在宏语句中使用malloc,如果malloc失败则退出。
#include<stdio.h>
#include <stdlib.h>
#define MALLOC(p,s) \
if (!(p=malloc(s))) {\
fprintf(stderr,"Insufficient memory"); \
exit(EXIT_FAILURE); \
}
int main()
{
int *pi;
float *pf;
MALLOC(pi,sizeof(int));
MALLOC(pf,sizeof(float));
*pi=1;
*pf=1.089;
printf("%d %f\n",*pi,*pf);
system("pause");//解决窗口一闪而过
return 0;
}
扩充学习:(以下为粘贴别人的,程序也为运行过)
C语言fprintf()函数:输出函数(格式化输出数据至文件)
下一节>
相关函数:printf, fscanf, vfprintf
头文件:#include <stdio.h>
定义函数:int fprintf(FILE * stream, const char * format, ...);
函数说明:fprintf()会根据参数format 字符串来转换并格式化数据, 然后将结果输出到参数stream 指定的文件中, 直到出现字符串结束('\0')为止。
返回值:关于参数format 字符串的格式请参考printf(). 成功则返回实际输出的字符数, 失败则返回-1, 错误原因存于errno 中.
范例
#include <stdio.h>
main()
{
int i = 150;
int j = -100;
double k = 3.14159;
fprintf(stdout, "%d %f %x \n", j, k, i);
fprintf(stdout, "%2d %*d\n", i, 2, i);
}
执行:
-100 3.141590 96
150 150