【发布时间】:2018-01-23 12:56:56
【问题描述】:
您好,我正在尝试从文件中读取两个字符,并希望将其以十六进制形式发送到 uint8_t*。 代码:
#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>
int file_handling();
int main()
{
uint8_t *output ;
output=file_handling() ;
printf("\noutput_main --> %02x",output);
}
int file_handling()
{
uint8_t *output_hand ;
char c;
FILE *f_gets = fopen("filename", "r");
if(f_gets==NULL)
{
printf("Please point to a valid key file!\n");
fclose(f_gets);
return 0;
}
char str[3];
if( fgets (str, 3, f_gets)!=NULL )
{
/* writing content to stdout */
puts(str);
output_hand = (uint8_t *)(str);
puts(output_hand);
printf("\noutput %s --- %02x --> size --> %lu",str,*output_hand,sizeof(*output_hand));
}
fclose(f_gets);
return *output_hand;
}
下面是输出
we we
output we --- 77 --> size --> 1 output_main --> 65
我能理解的是 77 是 w 的 ascii 而 65 是 e 的 ascii
但我想在 uint8_t *output 中输入我认为是十六进制的“我们” 哪里有问题 在 main 中,如果我使用指针“*output=file_handling()”而不是仅输出,则会出现分段错误。
如何从文件中读取值并将其放入 uint8_t ,其中文件具有十六进制字符,fget 如何将其识别为十六进制或字符。
谢谢
文件是一个文本文件
ab
fe
ea
ce
1d
基本上 uint8_t *输出; *输出= 0xFA; 有用 但我想从上面的文件中读取并将其放入输出变量中
【问题讨论】:
-
您为 Sam 编写的代码有很多问题(可能有六处左右)。也许最好向我们展示文件中的内容以及您希望输出的内容的示例,然后我们可以从那里开始工作。
-
文件包含十六进制字符
-
这并不能真正回答问题。您只是想从文件中读取数据并将其打印到屏幕上吗?您是否试图以某种方式操纵数据?如果您只是想打印字符而不是它的十进制值,请使用
%c而不是%s(顺便说一句,这是错误的,因为一些其他问题指出了其中一些问题程序员老兄)。 -
@jszakmeister 该文件只包含字符,我想读取它们并将其放入 uint8_t *输出为十六进制值,首先我不知道如何打印 uint8_t,其次 unint8_t 将包含 1 个字节十六进制字符是两个字符,所以我想一次从文件中读取两个字符。
-
“但我想输入“我们”,我认为它是一个十六进制”什么是“一个十六进制”?它是一个两个字母的字符串。如果您想从 ASCII 转换为整数,请查阅您的初级 C 编程书籍。
标签: c file-handling uint8t