首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

这个小程序有BUG,请高手指出。解决方案

2012-02-05 
这个小程序有BUG,请高手指出。。。#includestdio.h#includestdlib.hvoidfoo(intage,char*b){b(char*)mal

这个小程序有BUG,请高手指出。。。
#include   <stdio.h>
#include   <stdlib.h>

void   foo(int   age,char   *b){
  b   =   (char   *)malloc(64);
  sprintf(b,   "Your   age   is   %d ",   age);
}

int   main(){
  char   *f;
  foo(23,   f);
  printf( "%s\n ",f);
}

程序很小,但是有一个bug,不知道在哪里。

[解决办法]
最简单的改法
#include <stdio.h>
#include <stdlib.h>

void foo(int age,char **b){
*b = (char *)malloc(64);
sprintf(*b, "Your age is %d ", age);
}

int main(){
char *f;
foo(23, &f);
printf( "%s\n ",f);
free(f);
}

面目全非的改法
#include <stdio.h>

void foo(int age,char *s, int size){
snprintf(s, size, "Your age is %d ", age);
}

int main(){
char s[1024];
foo(23, s, sizeof(s)/sizeof(s[0]));
printf( "%s\n ",s);
}

热点排行