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

Add a null terminator where you find the //.

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 回答