马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int count = 0;
char ch;
int *ptr = NULL;
printf("请输入一个整数:");
ch = getchar();// 函数调用成功,返回获取的字符(用整型表示其 ASCII 码)
// printf("ch1 = %c\n", ch);
while (ch != '\n')
{
count++;
scanf("%c", &ch);//
// printf("ch = %c\n", ch);
ptr = (int *)realloc(ptr, count * sizeof(char));
if (ptr == NULL)
{
printf("内存空间不足!\n");
}
// printf("count = %d\n", count-1);
ptr[count-1] = ch;
// printf("count[%d] = %c\n", count, ptr[count-1]);
}
// ptr[count] = '\0';
printf("你输入的整数是:");
int i;
for(i = 0;i < count;i++)
{
printf("%c", ptr[i]);
}
return 0;
}
请问我的思路写出来为什么打印不出第一个字符,且内存空间不足?
本帖最后由 jackz007 于 2021-10-18 16:50 编辑
第 13 行 "偷走" 了第一个数字 #include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i , count = 0 ;
char ch , * ptr = NULL ;
printf("请输入一个整数:") ;
while((ch = getchar()) != '\n') { // 所有的键盘输入统一归口到这里,杜绝丢失键盘输入字符的问题
count ++ ;
if(ptr = (char *) realloc(ptr , count * sizeof(char))) {
ptr[count - 1] = ch ;
} else {
fprintf(stderr , "内存分配失败!\n") ;
count = 0 ; // 设置内存分配失败标志
break ; // 内存分配失败,继续循环没有意义,所以,必须退出循环
}
}
if(count) {
printf("你输入的整数是:") ;
for(i = 0 ; i < count ; i ++) printf("%c" , ptr[i]) ;
free(ptr) ; // 养成好习惯很重要!
printf("\n") ;
}
}
|