Leng_Mo 发表于 2022-3-17 17:34:58

创建一个可以存放任意长度整数的容器

创建一个可以存放任意长度整数的容器,然后输出

求大佬帮忙看看这个为什么总是输出乱码{:10_266:}

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main()
{
        printf("请输入:");
        char* str1 = NULL;
        char ch;
        int i = 1;
        //str1 = (char*)malloc(sizeof(char));
        while ((ch = getchar() != '\n'))
        {
                str1 = (char*)realloc(str1,(i++) * sizeof(char));
                str1 = ch;
        }

        printf("%s", str1);
        return 0;
}

jhq999 发表于 2022-3-17 17:48:58

本帖最后由 jhq999 于 2022-3-17 18:03 编辑

int main()
{
      printf("请输入:");
      char* str1 = NULL;
      char ch;
      int i = 1;
      //str1 = (char*)malloc(sizeof(char));
      while ((ch = getchar()) != '\n')///////////
      {
                       
            str1 = (char*)realloc(str1,(i+1) * sizeof(char));////////////
          str1 = ch;////////////
             i++;   
      }
        str1 = '\0';/////////////
      printf("%s", str1);
      return 0;
}

Leng_Mo 发表于 2022-3-17 17:55:34

jhq999 发表于 2022-3-17 17:48


谢谢大佬

ba21 发表于 2022-3-17 17:57:10

#include<stdio.h>
#include<stdlib.h>

int main()
{
      printf("请输入:");
      char* str1 = NULL;
      char ch;
      int i = 0;

      while ( (ch = getchar()) != '\n' )
      {
                str1 = (char*)realloc(str1, i * sizeof(char));
                str1 = ch;
                i++;
      }

      printf("%s", str1);
      return 0;
}

jhq999 发表于 2022-3-17 17:58:58

本帖最后由 jhq999 于 2022-3-17 18:00 编辑

Leng_Mo 发表于 2022-3-17 17:55
谢谢大佬

我马虎了,{:5_93:},数组越界了,现在改回来了

傻眼貓咪 发表于 2022-3-17 18:03:59

问题出现在你的 i++ 已经 +1 了,字符串不是从第 0 位开始赋值:#include <stdio.h>
#include <stdlib.h>

int main(){
    printf("请输入:");
    char *str = NULL, c;
    int i = 0; // <---------- 注意这里
   
    while((c = getchar()) != '\n'){
      str = (char*)realloc(str, (i + 1) * sizeof(char));
      str = c;
      i++; // <---------- 注意这里,最后才 +1
    }
    printf("%s", str);
    return 0;
}

jhq999 发表于 2022-3-17 18:10:59

本帖最后由 jhq999 于 2022-3-17 18:12 编辑

傻眼貓咪 发表于 2022-3-17 18:03
问题出现在你的 i++ 已经 +1 了,字符串不是从第 0 位开始赋值:

应该初始化1;
这样i+1=2才能\在最后空出一个字节装'\0’;
str1=ch;
刚开始i=0;那个,str1='\0’;越界了。

傻眼貓咪 发表于 2022-3-17 18:17:17

jhq999 发表于 2022-3-17 18:10


好的,学习学习。

jhq999 发表于 2022-3-17 18:24:45

傻眼貓咪 发表于 2022-3-17 18:17
好的,学习学习。

不小心,加了一坨翔进去,而且还是埋在土里的{:5_104:},

傻眼貓咪 发表于 2022-3-17 18:28:41

jhq999 发表于 2022-3-17 18:24
不小心,加了一坨翔进去,而且还是埋在土里的,

{:5_105:}
页: [1]
查看完整版本: 创建一个可以存放任意长度整数的容器