C语言设计 将txt文件中的数据读取并处理;

如:txt文本(data.txt)中数据为
1B 00 20 00 3B
1B 00 20 00 3B
1B 00 20 00 3B
1B 00 20 00 3B
1C 00 21 00 3B
通过编程将数据转换为
1*16+11=27 0*16+0=0 2*16+0=32 0*16+0=0 每行最后的3B不显示。
显示结果: 27 0 32 0
其他行照例;
自己写的代码有点问题;
注:数据有多行;

while(fgets(str, N, fp) != NULL)
{
//  puts(str);
    fun(str);
}

void fun(char *str) //  ä»…仅适用你所给的数据,不适用一般情况
{
    int i, t, sum, index = 1;
    for(i=0; str[i]; ++i)
    {
        if(str[i] >= '0' && str[i] <= '9')
            t = str[i]-'0';
        else if(str[i] >= 'A' && str[i] <= 'F')
            t = str[i]-'A' + 10;
        else
        {
            if(sum != 59)    //    å¿½ç•¥3B
                printf("%2d ", sum);
                
            sum = 0;
            index = 1;
            continue;
        }
        sum += pow(16,index)*t;    //    éœ€è¦å¤´æ–‡ä»¶math.h
        index--;
    }
    putchar('\n');
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-05-12
#include <stdio.h>
#include <stdlib.h>
#define MAX_LINE 1024
void mysub(char* str);
int main()
{
FILE *fp;
char strLine[MAX_LINE];
system("cls");
if((fp = fopen("c:\\1.txt","r")) == NULL)
{
printf("Open Falied!");
return -1;
}
while (!feof(fp))
{
fgets(strLine,MAX_LINE,fp);
mysub(strLine);
}
fclose(fp);
system("pause");
return 0;
}
void mysub(char *str)
{
int i=0,sum=0,count=0,c=0;
for(i=0;str[i]!='\0' && str[i]!='\n';i++)
{
if(str[i]!=' ')
{
if(str[i]>='0' && str[i]<='9') {count++;c=str[i]-48;}
if(str[i]>='A' && str[i]<='F') {count++;c=str[i]-55;}
if(count%2!=0) c=c*16;
sum+=c;
/*printf("\n%d  %d  %c",count,sum,str[i]);*/
if(count%2==0)
{
printf("%d ",sum);
sum=0;
}
if(count>=8) break;
}
}
printf("\n");
}

本回答被提问者采纳
第2个回答  2017-05-12
什么时候要呢?
相似回答