gpt4 book ai didi

c - 为什么代码使用输入字符串在屏幕上打印垃圾值?

转载 作者:行者123 更新时间:2023-11-30 21:27:01 24 4
gpt4 key购买 nike

我试图在c中使用动态内存分配来创建字符串类型数据类型。

我的代码正在打印用户输入的字符,但它也在下一行中打印一些垃圾值。为什么会发生这种情况?

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

void main(void)
{
int n = 1, i = 0;
char a = 0;
char *str = NULL;
str = malloc(sizeof(char) * (n));
printf("Enter string : ");
while (a != '\n')
{
a = getchar();
str = realloc(str, sizeof(char) * (n));
str[i++] = a;
n++;
}
printf(str);
free(str);
}

输入:

 "q"

输出:

 q
"garbage value"

最佳答案

这是您的程序,只需进行最少的更改:

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

void main(void)

{

int n = 1, i = 0;
char a = 0;
char *str = NULL;
str = malloc(sizeof(char) * (n+1)); // reserve space for a zero byte
printf("Enter string : ");
while (a != '\n')
{
a = getchar();
str = realloc(str, sizeof(char) * (n+1)); // reserve space for a zero byte
str[i++] = a;
str[i+1] = 0; // add a zero byte
n++;
}
puts(str); // puts instead of printf
free(str);
}

关于c - 为什么代码使用输入字符串在屏幕上打印垃圾值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55657794/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com