1

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

{0 /数据 1 / , 0x00, 0, 0xFF},

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

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

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

我只想打印每行的第二列和最后一列。下面是我处理的代码。它打印整条线。如何编辑以仅打印每行的第二列和最后一列。

#include<stdio.h>

#include<conio.h>

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;                       
}        

请帮忙!

万分感谢!

4

2 回答 2

1

sscanf()应该可以解决问题。

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

#include <stdio.h>
#include <stdlib.h>

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;
}
于 2012-04-16T20:31:28.847 回答
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<strlen(data))
 bracketposition = i;

当您找到字长的括号倒带位置(如果不是标准搜索空白)并读取这两个位置之间的值(空白位置和括号位置)

于 2012-04-16T19:21:00.573 回答