【发布时间】:2019-05-09 21:45:34
【问题描述】:
这是一个程序,它应该读取输入、一个数字“n”和一个字符,然后将该字符复制 n 次。它工作得很好,但是当我输入一个大数字时,例如 8+,它会完美复制,但会在末尾添加垃圾值。我不明白为什么会这样,因为我使用了 malloc 并且我在内存中正好为我保存了 n 个块。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* create_string (char ch, int n);
void main ()
{
int n;
char ch;
printf("Enter number for duplicates: ");
scanf("%d",&n);
printf("Enter a letter: ");
scanf(" %c", &ch);
printf("The letter '%c' duplicated %d times is: ",ch,n);
char* ptr=create_string(ch,n);
printf("%s",ptr);
}
char* create_string (char ch, int n)
{
char* dup=(char*)malloc(n*sizeof(char));
int i;
for (i=0; i<n; i++)
{
dup[i]=ch;
}
return dup;
}
试运行:
【问题讨论】:
-
您的
create_string函数没有创建字符串。 -
我看不到“试运行”图片。