2
私はメイン関数にwhileループを持っています。そこで、ユーザーは文字列を入力し、それをある構造体のテキストフィールドに割り当てる関数に渡します。C:既に設定されている値を変更せずに、同じchar * []を何回も使用できますか?
int main(void){
char text[255];
while(0) {
scanf("%s", text);
someFunction(text)
}
}
someFunction(char* text){
someStruct str = malloc (sizeof (str));
str.textfield = text;
}
は今、私は、char配列は参照によって渡されていることを知り、従ってsomeStructの全て作成されたインスタンスは、同じテキストフィールド、「テキスト」をスキャンして保存した。すなわち、最後の1つを有することになります。しかし、どうすればこの問題を回避できますか?
あなたの構造体フィールドに 'text'を割り当てるだけでポインタがコピーされるので、' text'の後続の使用で上書きされます。代わりに 'strdup(text)'を使用して文字列のコピーを作成します(これは 'malloc'を呼び出して、その文字列を新しく割り当てられた記憶領域にコピーします)。 –