如何从C中的每一行读取第二个和最后一个单词

我有一个包含这样数据的文件

{0 / Data1 /,0x00,0,0xFF},

{1 / data2 /,0x00,0,0xFF},

{2 / data3 /,0x00,0,0xFF},

{3 / data4 /, 0x00,0,0xFF },…

我想只打印每行的第二列和最后一列。 以下是我工作的代码。 它的印刷全线。 如何编辑以仅打印每行的第二列和最后一列。

#include #include int main () { char filename[] = "file.txt"; FILE *file = fopen(filename, "r"); if(file!= NULL) { char line[128]; while ( fgets( line, sizeof line, file)!= NULL) { fputs ( line,stdout); } fclose(file); } else { perror(filename); } getch(); return 0; } 

请帮忙!

万分感谢!

sscanf()应该做的伎俩。

它使用与printf()类似的格式字符串,然后将值读入变量。

 #include  #include  int main() { unsigned int a, c, d, e; char b[101] = ""; char filename[] = "file.txt"; FILE *file = fopen(filename, "r"); if (file != NULL) { char line[128]; while (fgets(line, sizeof line, file) != NULL) { sscanf(line, "{%d %100s , %x, %d, %x}", &a, b, &c, &d, &e); printf("%d %X\n", d, e); } fclose(file); } else { perror(filename); } return 0; } 

如果您的数据以这种方式格式化:{0 / Data1 /,0x00,0,0xFF}您可以搜索数据行末尾的括号。

示例(不是完整的解决方案)

 char data[] = "{0 /Data1/ , 0x00, 0, 0xFF}," //find the back bracket position int i=0; while( i < strlen(data) && data[i]!='}') i++; if(i 

当你发现括号倒带的位置为单词大小时(如果它不是标准的空格搜索)并读取这两个位置之间的值(空白位置和支架位置)