|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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") ;
- }
- }
复制代码
|
-
-
|