-4
コードがエラー*配列
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(){
char* array[1];
scanf("%s",array[0]);
return 0;
}
を実行しますが、次のコードは実行されません。セグメンテーションエラーを示します。どういう理由ですか。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(){
char* array[2];
scanf("%s",array[0]);
scanf("%s",array[1]);
return 0;
}
私の入力は、第一の場合では結合であり、第二
「array []」は初期化されておらず/割り当てられていないため、どちらもUBです。 – chux
データ型が正しくありません。あなたはchar * []ではなく、char []を必要とします。配列に入力データ用の空き容量があることを確認し、読み込んだ文字数を制限してください。 char line [1024]; fgets(行、sizeof行、stdin); 1つ、簡単な方法です。 –
PS:最初のバージョンは運が良いです。配列は1つのポインタ(通常は4または8バイト)のためのスペースを割り当てます。プログラムに8バイトより長い文字列を入力してから印刷してみます。 ;) –