首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

求解代码?解决思路

2012-10-16 
求解代码?????#includestdio.hint main(int argc, char *argv[]){char *ptr (char*)malloc(10)if(NUL

求解代码?????
#include<stdio.h>  
int main(int argc, char *argv[]) 
{
  char *ptr = (char*)malloc(10);
  if(NULL == ptr)
  {
  printf("\n Malloc failed \n");
  return -1;
  }
  else if(argc == 1)
  {
  printf("\n Usage \n");
  }
  else
  {
  memset(ptr, 0, 10);
  strncpy(ptr, argv[1], 9);
  while(*ptr != 'z')
  {
  if(*ptr == '')
  break;
  else
  ptr++;
  }
  if(*ptr == 'z')
  { 
  printf("\n String contains 'z'\n");
  // Do some more processing
  }
  free(ptr);
  }
  return 0;
 }

[size=16px]求教为什么当输入为’zebra’时,while循环甚至在执行 第一遍前就结束了,所以free()释放的内存地址就是一开始malloc()分配的地址。但是当输入’freeze’时, ptr记录的地址在while循环中被更改,因为将会是错误的地址传递到free()方法中引起崩溃。



[解决办法]
问题很多
strncpy(ptr, argv[1], 9);你怎么知道是9个
*ptr == ''这是什么,空么?

热点排行