本文记录自己在工作中关于语言本身遇到的问题及解决,不定时更新
【fgets 函数只读取一个字节时,第二个参数不能写1】
函数原型:char *fgets(char *str, int n, FILE *stream);
工作中曾经想要使用fgets函数读取一个文件流中的一个字节,想当然将第二个参数写成了1,结果读取出来的内容是NULL。后来查阅相关资料发现,fgets读取一个字节本身1没有问题,问题出在fgets函数在将内容读取到文件指针str中时,会自动附加结尾符,导致读出来的一个字节会被冲掉。因此使用fgets函数读取一个字节时需要将第二个参数写成2。
#include <stdio.h>
int main()
{
FILE *fp = NULL;
char str[24]={0};
fp = fopen("fgets.txt", "r");
fgets(str, 1, fp);
fclose(fp);
printf("str=%s\n", str);
}
$ cat fgets.txt
1
$ ./fgets
str=
【ARM中的char和X86的char的不同点】
对于char i=-1 打印出-1的结果
说白也就是在x86体系结构中默认的是signed char.所以打印结果是:-1
而在arm体系结构中默认的是unsigned char.所以打印的结果是:255