私はこのコードを持っている:C - fscanfは文字ポインタでは動作しますが、2重字ポインタでは動作しません。
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
char **string = malloc(sizeof(char) * 20);
FILE *fp = fopen("input.txt", "r");
fscanf(fp, "%s", *string);
printf("%s\n", *string);
}
このコードは、セグメンテーションフォールトを生成します。しかし、**string
を1文字のポインタに変更し、*string
をstring
に変更すると動作します。どうしてこれなの?そして、ポインタの配列でfscanfを使うにはどうすればいいですか?
ありがとうございました。あなたは、ポインタへのポインタを割り当てると
短い回答:mallocを間違って使用しています – Isaiah
文字列の配列が必要ですか? 'string [0]'のように文字列であり、 'string [0] [0]'はcharですか?あなたは、配列char *と各文字列char *のためにmallocを行う必要があります。 – cpatricio
Gotcha。ありがとう。 – Pen275