3

テキスト ファイルの各行を構造体の配列に格納する必要があるプログラムを C で作成していますが、"//" 記号 (つまりコメント) の後の行は無視する必要があります。次のコードを使用して各行を保存することができましたが、「//」で始まる行の一部を無視する方法がわかりません。これは、テキスト ファイルの各行を構造体の配列の個別のインデックスとして格納するコードの一部です。

while(!feof(fp))
{
    fscanf(fp, "%127s", rName[i].name);
    i++;
}

これは私の構造体の定義です

typedef struct{
    char [128] name;
    int nameLength;
} stringStruct;

以下のテキストがテキスト ファイルに含まれていた場合、基本的に "KeepThis" テキストのみを保存し、"//ignorethis" テキストは保存したくありません。また、各行を配列の異なるインデックスに格納したいと考えています。

KeepThis//ignorethis
//ignorethis
KeepThis

どんな助けでも大歓迎です。

4

2 に答える 2

1

簡単な方法: 「//」を検索strstrして「\0」に置き換えます

#include <stdio.h>
#include <string.h>

int main(void){
    char line[128] = "KeepThis//ignorethis";
    char *p;
    p = strstr(line, "//");
    if(p != NULL)//found "//"
        *p = '\0';
    printf("%s\n", line);//KeepThis
    return 0;
}
于 2013-05-26T07:08:41.060 に答える
0

// がある場所にヌル ターミネータを追加します。

for (int i = 0; i < HOWEVERMANY; i++)
{
    for(int j = 0; j < 127 && rName[i].name[j] != '\0'; j++)
    {
        if (rName[i].name[j] == '/' && rName[i].name[j+1] == '/')
        {
            rName[i].name[j] = '\0';
            break;
        }
    }
}
于 2013-05-25T21:27:36.337 に答える