① 怎样用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字节的字符串数组,一定记得多算一个结束符的位置。