我在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
非常感谢任何帮助。
答案 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;
}
}
}