从.txt文件读取十六进制值并将其存储到unsigned char array []

时间:2016-04-21 06:28:18

标签: c arrays

我有一个txt文件,文件内容为:

0x1a,0x2b,0xff,0x99,0x55

我需要将所有这些值存储到:

  
    

unsigned char tempArray [10] = {0xaa,0xbb,0xcc,0xdd,0xee,0x00,0x00,0x00,0x00,0x00}。

  

是否有任何解决方案,以便我的:

  
    

tempArray [] = {0xaa,0xbb,0xcc,0xdd,0xee,0x1a,0x2b,0xff,0x99,0x55}。

  

需要将.text文件中的值存储到仅使用 / 的数组的特定位置。

感谢您期待有利的回复。 :)

修改

'到现在为止,我正逐字逐句地阅读1.txt个文件。变量ch存储了curent值,我试图将ch值存储到ch2*以后复制到数组。

下面的代码适用于阅读价值,但在segmentation fault出现时会显示ch2

unsigned char tempArray[10]={0xaa,0xbb,0xcc,0xdd,0xee,0x00,0x00,0x00,0x00,0x00};

int main()
{
    char ch,i=0;

    FILE *fp;

    char *ch2=NULL;

    fp = fopen("1.txt","r"); // read mode

    if( fp == NULL )
    {
        printf("err");

        return 0;
    }

    printf("The contents of file are :\n");

    while(( ch = fgetc(fp)) != EOF )
    {
        if(ch==',')
        {
            printf(" ");
        }
        else
        {
            printf("%c",ch);

            //sprintf(ch2,"%c",ch2);

            //printf("\tch2 :: %s",ch2);
        }

    }

    i++;

    fclose(fp);

    return 0;
}

2 个答案:

答案 0 :(得分:0)

使用您的代码,您只需编码:

uint32_t index = 0;

while(( ch = fgetc(fp)) != EOF )
{
    if(ch==',')
    {
        printf(" ");
    }
    else
    {
        printf("%c",ch);

        tempArray[index] = ch;

        if ( tempArray < (sizeof(tempArray)/sizeof(tempArray[0])) )
        {
            index++;
        }
    }
}

我猜,您看到的细分错误是由

引起的
char *ch2=NULL;

之后,您必须分配将放置字节读取的空间。您可以使用malloc来执行此操作。

char *ch2=malloc(size_of_you_buffer*sizeof(unsigned char);

必须根据您的需要设置size_of_you_buffer

答案 1 :(得分:0)

unsigned char tempArray[]=
{
#include "file.txt"
};