将文件的每一行存储在C结构中但忽略//后面的部分行

时间:2013-05-25 21:17:06

标签: c string file-io comments

我在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

非常感谢任何帮助。

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分: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;
        }
    }
}