ユーザーが入力した数値で指定された場合、その数の文字のみを出力するプログラムで作業しています。たとえば、ユーザーが数字10を入力すると、14文字(改行、空白およびタブを含む)が入力された場合、10文字だけが印刷されます。私のコードは最初の3つのキャラクターのために働くようですが、それはゴミをプリントアウトします。私は何が間違っているのか分かりません。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'文字で終了する必要があります –