当前位置:首页 » 编程语言 » 用C语言提取数据中特定字节
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

用C语言提取数据中特定字节

发布时间: 2022-03-08 21:42:42

① 怎样用c语言提取txt中特定字符串

用fgets读入一行,用sscanf 读出第一列数据
下面假定第一列数据作为字符串,用 sscanf(buf,"%s", 。。。格式读。
类似,整型用 %d 浮点用 %f %lf ....

#include <stdio.h>
#include <stdlib.h>
main(){
char buf[100];
char col[100][30];
int n=0;
FILE *fp = fopen("a.txt", "r");
while ( fgets(buf, 100, fp) != NULL) {
if ( sscanf(buf,"%s",col[n]) == 1){printf("%s\n", col[n]); n++; };
}
return 0;
}

如果要读每行第一个数,(只读一位数 用 格式 %1d):
int x[100];
...
while ( fgets(buf, 100, fp) != NULL) {
if ( sscanf(buf,"%1d",&x[n]) == 1){ printf("%d\n",x[n]);n++;};

② 如何用c语言提取一个文件中的指定类型的数据

fscanf 函数应该可以,按类型读取

③ c语言中如何提取二进制数中的某一位

下面是三种方式:

①通过模2除2(%2、/2)的方法

num%2——取出二进制的最后一位

num/2——右移去掉二进制的最后一位

通过while循环,依次取出二进制的最后一位数字判断是否为1,若为1则count++,while(num)只有当num变为0时循环结束。

问题:在测试-1出现bug,-1的二进制中应该有32个1,输出却为0。我们将-1带入代码中发现-1%2=0,count不增,然后-1/2=0,循环结束,故输出count的值为0。

解决方案:将变量num的数据类型改为unsigned int (无符号整型),此时表示的是正的整型的最大值,所以当num=-1时,表示二进制为32个1的正数,通过循环可以输出正确的个数。

②通过右移操作符(>>)、按位与操作符(&)实现

Example:当num=10(1010),通过右移操作num>>i,二进制向右移动i位。

//i=0,num>>0,右移0位,此时(1010)&(0001)=0

//i=1,num>>1,右移1位,此时(0101)&(0001)=1,count++

//i=2,num>>2,右移2位,此时(0010)&(0001)=0

//i=3,num>>3,右移3位,此时(0001)&(0001)=1,count++

……

因为二进制共32位,所以循环要执行32次后结束,得到count为2。

缺点:不够高效,必须循环32次。

③通过按位与操作符(&)巧妙运算实现

Example: 当num=15时,

1//num&(num-1)=(1111)&(1110)=(1110)

2//num&(num-1)=(1110)&(1101)=(1100)

3//num&(num-1)=(1100)&(1011)=(1000)

4//num&(num-1)=(1000)&(0111)=0 ,循环停止。共执行4次while循环。

(3)用C语言提取数据中特定字节扩展阅读

一、指定的某一位数置1

宏 #define setbit(x,y) x|=(1<<y)

二、指定的某一位数置0

宏 #define clrbit(x,y) x&=~(1<<y)

三、指定的某一位数取反

宏 #define reversebit(x,y) x^=(1<<y)

四、获取的某一位的值

宏 #define getbit(x,y) ((x) >> (y)&1)



④ C语言中怎样读取一个8位字节某一位的简单

可以用下面的程序读取一个字符的每一位:

#include<stdio.h>

int main()

{

unsigned char c;

int i;

scanf("%c",&c);//读取一个字符,如要读取一个0~255的整数,可将%c改为%u

for(i=7;i>=0;i--)

printf("%d",(c & 1<<i)!=0);//依次输出它的每一个二进制位

printf(" ");

getch();

return 0;

}

⑤ C语言如何读文件指定的字节,有哪些库函数

int fseek(
FILE *stream,
long offset,
int origin
);
stream 文件指针.offset 从第三个参数origin开始计算的偏移字节数origin 初始位置必须为STDIO.H中定义的以下值之一: SEEK_CUR 文件指针的当前位置.SEEK_END 文件末尾.SEEK_SET 文件开头.</SPAN></dd>如果成功, fseek 返回0. 否则返回非零值. 使用这个函数定位后,你就可以取到你想要位置的字节了。以上是我从MSDN上翻译过来的。

⑥ C语言如何读取文件中指定的某一段

#include<stdio.h>

#include<string.h>

#define TBEGIN "B"

#define TEND "END B"

void main() { FILE *fp; char buffer[256];

if ( fp=fopen("c:\test.txt","r") ) {

while ( !feof(fp) ) { fgets(buffer,255,fp); if ( strcmp(buffer,TBEGIN)==0 ) break; }

while ( !feof(fp) ) {

fgets(buffer,255,fp); if ( strcmp(buffer,TEND)==0 ) break; else printf("%s ",buffer);

}

fclose(fp);

} else printf("无法打开文本文件. ");

}

⑦ C语言中怎样读取一个8位字节某一位

bit a;
a=(ADCPSRA)&(0x08);
比如ADCPSRA=11011000,和
00001000位与一下,就可以把该位取出来,结果是1,如果ADCPSRA=11010000,位与一下就是0,我说的对吗

⑧ C语言,将一个字节数据的某个位提取出来,用这样的宏定义可不可以

宏是编译前替换展开的,要注意括号哦亲~
#define RX_DR ((sta)&0x40)

⑨ 在c语言中什么确定某一数据所需要的存储字节数

要确定数据占用多少字节存储,需要认真进行分析,区分起来有如下内容需要注意:
1、是否是简单数据类型。简单数据类型包括系统自带的int、float、double、char、long、long long、short等,对于这类型数据,要知道占用的存储字节数,只需要对其进行sizeof(类型)即可。
2、复杂数据类型:这类包括数组、联合(union)、结构体。数组的情况有一些特殊,如果你的数组是在作用域内定义,直接sizeof(数组名)可以获取数组所占字节数,但是如果作为参数传入函数,无法使用这种方法。联合所占字节数为其中所有元素中最大的一个所占的字节数。结构体的所占字节数用sizeof(结构体)可以求得。
3、注意:字符串数组单独拿出来讨论,如果你需要一个10字节的字符串数组,一定记得多算一个结束符的位置。