C:仅打印一定数量字符的程序

时间:2016-11-26 21:26:43

标签: c arrays

我正在开发一个程序,当用户输入的数字指定时,该程序将只打印出该字符数。例如,如果用户输入数字10,则如果输入了14个字符(包括换行符,空格和制表符),则只打印10个字符。我的代码似乎适用于前三个左右的字符,然后它打印出垃圾。我不确定是什么问题。

#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();
    }

}

1 个答案:

答案 0 :(得分:2)

您正在将非零终止数组传递给puts。如果您希望程序正常工作,只需创建更大的数组1项并添加&#39; \ 0&#39;最后。

编辑:像这样

onResume()

然后就在array = (char *)malloc((num+1) * sizeof(char)); 之前:

puts