2

私が課題のために書いているプログラムのこのメソッドのために、いくつかの入力と2次元配列を手伝ってくれるといいのですが。プログラミング言語はCIで、いくつかの入力パラメーターを取得しました。

FILE * ifp =入力ファイルポインタ、メインで開き、1行あたり3文字列の形式のtxtファイルを開きました

char ** firstTokens、middleTokens = 2次元のchar配列。最初の2つの文字列から、各文字列の最後にある予想される句読点(コンマやピリオドなど)を除いたものを保持する必要があります。出力パラメータになる予定です。

char * lastLetter=txtファイルの1行あたりの最後の列にある文字列の最初の文字。出力パラメータになる予定です。

intnumberOfLines=テキストファイルから読み取ることを期待している行数

これは私のメイン関数のメソッドの呼び出しです:

readLine(ifp, firstTokens, middleTokens, lastLetter, numberOfLines);

私の編集では常にコンパイラエラーとセグメンテーション違反が発生するため、私の問題はとfirstTokensを正しく取得することにあると思います。middleTokensエラーに対するいくつかのヘルプ/説明をいただければ幸いです。

void readLine(FILE * ifp, char ** firstTokens, char ** middleTokens, char* lastLetter, int numberOfLines)
{
    char* tempFirst;
    char* tempMiddle;
    char* tempLast;
    char delim[4];
    delim[0] = '.';
    delim[1] = '\0';
    delim[2] = '\n';
    delim[3] = ',';
    int i;

    for(i = 0; i < numberOfLines; i++)
    {
        fscanf(ifp, "%s %s %s", tempFirst, tempMiddle, tempLast);
        *firstTokens[i] = strtok(tempFirst, delim);
        *middleTokens[i] = strtok(tempMiddle, delim);
        lastLetter[i] = tempLast[0];
    }
}
4

1 に答える 1

1

tempFirst、、、tempMiddleおよびにストレージを割り当てる必要がありますtempLastfscanf十分なメモリを提供していると仮定して、これらのポインタに書き込みます。

#define MAX_NAME_LEN (20) /* change this as required */
...
char tempFirst[MAX_NAME_LEN];
char tempMiddle[MAX_NAME_LEN];
char tempLast[MAX_NAME_LEN];
...
fscanf(ifp, "%s %s %s", tempFirst, tempMiddle, tempLast);
于 2012-11-13T11:49:57.050 に答える