我正在处理的程序中,当由用户输入的数字指定时,将只打印出该数量的字符。例如,如果用户输入数字10,那么如果输入14个字符(包括换行符,空格和制表符),则只会打印10个字符。我的代码似乎适用于前三个字符,然后打印出垃圾。我不确定什么是错的。C:只打印一定数量的字符的程序
#include <stdio.h>
#include <stdlib.h>
void findchars(char *abc, int number);
int main(void)
{
char *array; // the actual array
int num; // number of characters to read, becomes array value
printf("Number of characters:");
scanf_s("%d", &num);
array = (char *)malloc(num * sizeof(char));
findchars(array, num);
printf("The first %d characters: ", num);
puts(array);
free(array);
return 0;
}
void findchars(char *abc, int number)
{
int i;
printf("Type characters and I will stop at %d: ", number);
for (i = 0; i < number; i++)
{
abc[i] = getchar();
}
}
'puts'接受字符串。你没有给它一个字符串。 – melpomene
不要施放'malloc'。此外,根据定义,“sizeof(char)'是1。 – melpomene
'abc'不是'NULL'终止。 C中的字符串必须以'\ 0'字符结尾 –