c語言某
『壹』 c語言如何讀取文件中指定的某一段
使用fread函數讀取指定長度的字元串,即使包含\n也會被讀取,可以首先使用fseek定位到文件結尾,然後ftell函數返回的值就是文件的大小,這樣就可以用循環多次讀取文件,直到讀取所有內容
FILE *file = NULL;
char szFile[1025] = {0};
int nHadRead = 0;
file = fopen( "file.txt", "r+");
if ( file == NULL )
return;
fseek( file, 0, SEEK_END ); //定位到文件尾
int nLen = ftell( file ); //獲取當前位置,即文件長度
fseek( file 0, SEEK_SET ); //重新定位到文件開頭,准備開始讀
while ( nHadRead < nLen )
{
int nRead = nLen - nHadRead >1024 ? 1024 : nLen - nHadRead;//如果剩餘小於1024位元組,則讀剩餘位元組,否則每次讀取1024位元組。
int nTmp = fread( szFile, 1, nRead , file );
nHadRead += nTmp;
printf( "%s", szFile );
memset( szFile, 0x0, sizeof(szFile) );
}
fclose(file);
大致過程就是這樣,純手打,沒有調試過,可能有錯
『貳』 C語言怎麼讀取某一文件夾下的所有文件夾和文件
讀取的代碼方式如下:
intmain()
{
longfile;
struct_finddata_tfind;
_chdir("d:\");
if((file=_findfirst("*.*",&find))==-1L)
{
printf("空白! ");
exit(0);
}
printf("%s ",find.name);
while(_findnext(file,&find)==0)
{
printf("%s ",find.name);
}
_findclose(file);
return0;
}
『叄』 C語言,判斷某整數中是否存在重復數字。怎麼寫呢
#include<stdio.h>
#include<stdbool.h>
intmain()
{
longintnum,temp;
inti=1;
printf("請輸入一個整數:");
scanf("%ld",&num);
temp=num;
//獲取所輸入整數的位數。
while(殲姿純temp/10>0){
i+=1;
temp=temp/10;
}
//列印所輸入整數的位數,並定義一個bool型數組。
printf("該數為%d位數。\n",i);
boola[i+1];
//初始化數組中所有元素為0.
for(intj=0;j<i+1;j++){
a[冊兄j]=0;
}
//判斷是否有重復的數字。
<spanstyle="color:#ff0000;">do{
intn=num%10;
if(a[n]==1){
printf("出現重復了。\n");
break;
}
a[n]=1;
num/=10;
}while(num);</span>
if(num==0){
printf("沒有重復。\n");
}
return0;
}
(3)c語言某擴展閱讀:
return 表示從被調函數返回到主調函數繼續執行,返回時可附帶一個返回值,由return後面的參數指定。 return通常是必要的,因為函數調用的時候計算結果通常是通過返回值帶出的。
如果函數執行不需要返回計算結果,也經常需要返回一個狀態碼來表示函數執行的順利與否(-1和0就是最常氏咐用的狀態碼),主調函數可以通過返回值判斷被調函數的執行情況。
如果函數名前有返回類型定義,如int,double等就必須有返回值,而如果是void型,則可以不寫return,但這時即使寫了也無法返回數值。
『肆』 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循環。
(4)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語言中的某個變數能不能連續被賦予值
y作為一個變數,可以被多次賦值,當你再一次賦值時,會將上次的值覆蓋掉。
在C語言睜態中,當我們定義一個變數y時,系統會在內存中的某個地址分配一個存儲單元,用來存悉檔源放y變數的值,你多次賦值,相當於多次往這個地址的存儲單蠢卜元寫數據,只是覆蓋而已。
『陸』 C語言:某數列前兩項分別為1和2,其後每項為前兩項之和,求此數列的第10個數
#include<stdio.h>
#defineN10
intmain()
{
inti,array[N]={1,2,};
for(i=2;i<N;i++)
哪行{
猜緩亮array[i]=array[i-1]+array[i-2];
}
printf("第十個數是array[9]=%d ",array[9]);
return0;
}
執行結果:
第穗寬十個數是array[9]=89
『柒』 在c語言中表示某實數類型數據的絕對值要使用什麼表示函數
用abs()函數表示,其步驟如下:
需要准備的材料分別有:電腦、C語言編譯器。
1、首先,打開C語言編譯器,新建一個初始.cpp文件,例如:test.cpp。
2、其次,在test.cpp文件中,輸入C語言代碼:猜攔耐printf("%d", abs(-9));。
3、穗春最後,編譯器運行test.cpp文件,此時成功表示了-9的絕對值並列印衡孝了出來。