|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char ch;
char *num=NULL;
int limit = 0;
long times = 0;
int reset=10;
num = (char *)malloc(10);
printf("请输入一个整数:");
while ((ch=getchar()) != '\n')
{
num[limit++] = ch;
if (limit >= 10)
{
num = (char *)realloc(num, reset++);
times++;
}
}
num[limit]='\0' ;
printf("你输入的整数是:%s\n", num);
printf("重新申请了:%d次\n",times);
free(num);
return 0;
}
如图所示,输入的少没有问题。
但是打印到第17个字符总会变成.
请大神帮忙细说一下原因。
- #include <stdio.h>
- #include <stdlib.h>
- int main(void)
- {
- char ch;
- char *num=NULL;
- int limit = 0;
- long times = 0;
- int reset=10;
-
- num = (char *)malloc(10);
- printf("请输入一个整数:");
- while ((ch=getchar()) != '\n')
- {
- num[limit++] = ch;
- if (limit >= 10)
- {
- //num = (char *)realloc(num, reset++);
- num = (char *)realloc(num, ++reset);
- times++;
- }
- }
- num[limit]='\0' ;
- printf("你输入的整数是:%s\n", num);
- //printf("重新申请了:%d次\n",times);
- printf("重新申请了:%ld次\n",times);
-
- free(num);
- return 0;
- }
复制代码
|
|