したがって、関数の配列からmain()関数の変数に文字列を返すだけです。以下は私の機能です。主な機能はここにある配列の文字列を関数のC言語の変数に代入するにはどうすればよいですか?
char startPrompt()
{
//array of files
char* arrayFiles[7]={"Room1.txt", "Room2.txt", "Room3.txt", "Room4.txt", "Room5.txt", "Room6.txt", "Room7.txt"};
//used to store file that has START_FILE in it
char startFile;
int i;
for(i=0;i<7;i++)
{
//pointer to files
FILE *fPointer;
//prints files to output
char loadScreenOutput[800];
char* response[256];
fPointer=fopen(arrayFiles[i], "r");
//checks if the file doesn't exist
if(fPointer== NULL)
{
printf("Unable to open the file!\n");
}
//if file exists, do this.
else
{
while(!feof(fPointer))
{
fgets(loadScreenOutput, 800, fPointer);
if(strstr(loadScreenOutput, "START_ROOM"))
{
return *arrayFiles[i];
}
}
fclose(fPointer);
}
}
:へ
int main()
{
char fileName;
//start the game with the start file
fileName=startPrompt();
printf("%s", fileName)
return 0;
}
しかし、上記リードそれは基本的に単語のためのいくつかのファイルを検索し、「START_ROOM」を含むファイル名の文字列を返します。セグメンテーション障害。
printf( "%c"、fileName)にprintfを変更すると、ファイルの最初の文字が "R"になります。
「Room1.txt」を返してfileNameに格納するにはどうしたらいいですか?私はそれが問題かもしれないと推測できるので、fileNameの可変型を変更したいと思います。または、関数の戻り値の型を変更してください。これは、それが問題であると推測しています。
私は関数内にprintf()を置くと、 "Room7.txt"という文字が表示されるので、このコードが上にあります。
がなぜそこ 'while'ループです:
書き、あなたのプログラムを修正するには? 'while(j!= 1)'は、ループの最後にある 'j = 1;'のために1回だけループします。 – InternetAussie
@InternetAussie、私はそれを削除しました。ループは必要ないと思う。申し訳ありませんが、私が以前行っていたことから残しました。 – user7977797