繁体   English   中英

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

[英]How to read second and last words from each line in C

我有一个像这样的数据文件

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

请帮忙!

万分感谢!

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

如果您使用以下格式格式化数据:{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;

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM