① 怎樣用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位元組的字元串數組,一定記得多算一個結束符的位置。