创建一个可以存放任意长度整数的容器
创建一个可以存放任意长度整数的容器,然后输出求大佬帮忙看看这个为什么总是输出乱码{: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 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;
}
jhq999 发表于 2022-3-17 17:48
谢谢大佬 #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 18:00 编辑
Leng_Mo 发表于 2022-3-17 17:55
谢谢大佬
我马虎了,{:5_93:},数组越界了,现在改回来了 问题出现在你的 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:12 编辑
傻眼貓咪 发表于 2022-3-17 18:03
问题出现在你的 i++ 已经 +1 了,字符串不是从第 0 位开始赋值:
应该初始化1;
这样i+1=2才能\在最后空出一个字节装'\0’;
str1=ch;
刚开始i=0;那个,str1='\0’;越界了。 jhq999 发表于 2022-3-17 18:10
好的,学习学习。 傻眼貓咪 发表于 2022-3-17 18:17
好的,学习学习。
不小心,加了一坨翔进去,而且还是埋在土里的{:5_104:}, jhq999 发表于 2022-3-17 18:24
不小心,加了一坨翔进去,而且还是埋在土里的,
{:5_105:}
页:
[1]