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

C gets有关问题

2013-08-09 
Cgets问题#includestdio.h#includestdlib.h#includestring.h#define ERRP(con,ret) do{\if(con)\ret

C gets问题

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define ERRP(con,ret) do{\
if(con)\
ret;\
}while(0)\

int main(void)
{
char a[10],num;
int i = 10,j = 0;
int count = 0;
char *p = NULL,*prev = NULL;

while (1)
{
printf("please input %d words:",count+1);
gets(num);
if(num == 'p')
break;

p = (char *)malloc((count+1)*sizeof(char));
ERRP(NULL == p,return -1);

memmove(p,prev, sizeof(char)*(count));
p[count] = num;
free(prev);
prev = p;
count++;
}
putchar(10);
for(i=0;i<count;i++)
{
   printf("[%c:%p]\n",p[i],&p[i]);
}
printf("\n");
free(p);
return 0;
}

各位大神们这个。。。gets怎么玩啊。。。编译没错  但是运行就会段错误 gets
[解决办法]

char *gets(char *s);// gets函数的参数是一个字符串哦,
                      //你传一个char显然出问题

//建议换成
int getchar(void) ;//单个字节获取

[解决办法]
 gets函数的参数是一个字符串哦,
但是你这里gets(num);num是字符变量
 
getchar()能实现你的目的  

或者改成char num[] ,但是后面都要改了

热点排行