5文字を入力する代わりに、5文字を要求する代わりに、4文字しか入力できないのはなぜですか? なぜデフォルトで*a+0 = '\n'
が保存されますか? 私もscanf("%d %c", &n &ch)
を9行目で試しましたが、問題は同じでした。文字列へのポインタの配列
#include <stdio.h>
#include <string.h>
int main()
{
int n;
char ch;
printf("no of elements\n");
scanf("%d ", &n); //line 9
//asking for number of pointer in array
char *a[n];
puts("string");
for (int i = 0; i < n; ++i){
gets(a+i);
}
puts("-----");
for (int j = 0; j < n; ++j){
puts(a+j);
}
puts("-----");
puts(a);
puts("-----");
puts(a+2);
return 0;
}
[___DO NOT___は 'gets()'を使用すると危険です。代わりに 'fgets()'を使用してください。](https://stackoverflow.com/a/41383540/2173917) –
'a'のポインタがどこにも指していないので、未定義の動作があります。 – Kevin
@Kevinしかし、それはどうですか、正しく説明してください。 –