當前位置:首頁 » 編程語言 » c語言特定數據怎麼讀
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言特定數據怎麼讀

發布時間: 2022-06-14 09:04:49

c語言讀取指定行數據

#include<stdio.h>
#defineMAXC1024
intReadSpeacialLine(inti)
{
charfilename[]="test.c";//文件名
FILE*fp;
intret=0,L;
intWhichLine=i;//指定要讀取哪一行
intCurrentIndex=0;//當前讀取的行
charStrLine[MAXC];//每行最大讀取的字元數,可據實際情況更改
if((fp=fopen(filename,"r"))==NULL)//打開文件
{
printf("openfileerror! ");
returnret;
}
while(1){
if(NULL==fgets(StrLine,MAXC,fp))break;
L=strlen(StrLine);
if(' '==StrLine[L-1]){
memset(ln+L-1,0,MAXC-L+1);
CurrentIndex++;
if(WhichLine==CurrentIndex)
{
fgets(StrLine,MAXC,fp);//讀取一行
printf("%s",StrLine);//輸出
ret=1;
returnret;
}
}
else{//行內容太多StrLine會讀不到行結尾的情況
CurrentIndex++;
if(WhichLine==CurrentIndex)
{
fgets(StrLine,MAXC,fp);//讀取一行
printf("%s",StrLine);//輸出
ret=1;
returnret;
}
while(1){
if(NULL==fgets(StrLine,MAXC,fp))gotoEND;
L=strlen(ln);
if(' '==ln[L-1])break;
}
}
}
end:
fclose(fp);//關閉文件
returnret;
}

使用fgets函數,fgets是每次讀取一行。

使用memset來清除StrLine,防止上一次StrLine中的內容未清除。

滿意請採納,不懂請追問。

② C語言如何實現從txt中讀取特定數據

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void main()
{
char *pcTmp = NULL;
char szBuf[] = "abcdef 123456";
char seps[] = " ";
char ch[20];
int num;

pcTmp = strtok(szBuf,seps);
if( NULL != pcTmp )
{
strcpy(ch, pcTmp);
printf("ch is %s\n", ch);
}
pcTmp = strtok(NULL,seps);
if( NULL != pcTmp )
{
num = atoi(pcTmp);
printf("num is %d\n", num);
}
system("pause");
}

③ C語言中怎麼從文件中讀取特定數據

哥哥我想出的辦法是這樣的:

因為兄弟文件格式是一行一行的, 且每行開頭是一個關鍵字,然後後面是相應數據, 所以哥哥是這么想的, 比如要讀"AB2345"這個關鍵字對應行的內容, 那首先用變數或者宏定義定義下來, 然後從文件開頭開始, 一個字元一個字元的掃描, 對每一行的開始的6個字元組成的關鍵字讀出來跟"AB2345"這個關鍵字比較, 判斷是否是想要讀取的, 如果是, 那麼通過ftell, fseek 兩個函數分別得出當前指針的位置和適當移動指針的位置, 最後讀取相應內容輸出來!

詳細代碼如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define BUF_SIZE 1024
#define KEY "AB2345"
#define KEY_LEN 7

int main()
{
int ch = 0;
int first = 1;//開始時的標志,因為是一個字元一個字元的掃描
int flag = 0;//文件開頭是不是所要讀內容的標志
int count = 0;//遇到'\n'的個數
int pre_pos = 0, cur_pos = 0;//前一次和當前文件指針的位置
char buf[BUF_SIZE] = {0};
FILE *fp = NULL;

fp = fopen("test.txt", "r");
if (fp == NULL)
{
printf("Cann't open the file!\n");
exit(1);
}
else
{
while ((ch = fgetc(fp)) != EOF)
{
if (first)
{
//若要讀取的內容在文件開頭就有時
//移動指針到文件開頭
fseek(fp, -1L, SEEK_CUR);
fgets(buf, KEY_LEN, fp);
if (strcmp(buf, KEY) == 0)
{
first = 0;
flag = 1;
continue;
}
else
{
first = 0;
}
}
if (ch == '\n')
{
count++;//遇到'\n'的個數
pre_pos = cur_pos;//上次遇到'\n'時文件指針的位置
cur_pos = ftell(fp);//當前遇到'\n'時文件指針的位置

//文件開頭內容符合要求的就適當移動指針位置
//然後讀取輸出來
if (count == 1 && flag == 1)
{
fseek(fp, 0L, SEEK_SET);
memset(buf, 0, sizeof(buf));
fgets(buf, cur_pos - 1, fp);
printf("%s\n", buf);
}
//之後內容符合要求的就適當移動指針位置
//然後讀取輸出來
else
{
memset(buf, 0, sizeof(buf));
fgets(buf, KEY_LEN, fp);
if (strcmp(buf, KEY) == 0)
{
fseek(fp, (-1) * (KEY_LEN - 1), SEEK_CUR);
memset(buf, 0, sizeof(buf));
fgets(buf, cur_pos-1-pre_pos, fp);
printf("%s\n", buf);
}
}
}
}
}
fclose(fp);

return 0;
}

④ 如何用C語言,讀文件中某行某列的數據。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int fileToFile(char *nameSrc, char *nameDes);
char * getLineBuf(int line, int col, int len, char *filename);
/**************************************************************
說明:
1.使用了內存實時分配,可以滿足讀取任意長度的字元
但是,需要調用時手動釋放內存,否則內存泄露。
2.對中文沒有判斷,會出現亂碼。
***************************************************************/
char * getLineBuf(int line, int col, int len, char *filename)
{
char ch;
int l = 1;
char *pT = NULL;
int i = 0;
char *pA = (char *)malloc(sizeof(char)*len+1);
memset(pA, 0x00, sizeof(char)*len+1);
FILE *fp = NULL;
if (!(fp = fopen(filename, "r")))
{
printf("打開文件失敗\n");
goto End;
}
while(!feof(fp))
{
if (l == line)
{
fseek(fp, col-1, SEEK_CUR);
i = fread(pA, sizeof(char), len, fp);
if(i<len)
{
printf("字元長度不足!");
pA[i] = '\0';
goto End;
}
if (pT = strstr(pA,"\n"))
{
printf("本行長度不足");
pA[pT-pA] = '\0';
goto End;
}
break;
}
ch = fgetc(fp);
if(ch == '\n')
{
l++;
}
}
if (l+1 < line)
{
printf("文件行數不足");
}
End:
fclose(fp);
return pA;
}
/*******************************************
說明:
1.系統命令的調用,可以查詢下DOS命令的使用
2.如果需要復雜的DOS命令,可以使用字元串拼裝
********************************************/
int main()
{
int i = 0;
char *s = NULL;
FILE *fp = NULL;
char filename[100];
char buf[100];
memset(buf, 0x00, sizeof(buf));
char *log = "log.txt";
//sprintf(buf, "dir /B %s > %s", "*.txt", log);//字元串拼裝
//system(buf);//調用系統命令
system("dir /B *.txt > log.txt");//調用系統命令
fp = fopen(log, "r");
if (fp == NULL)
printf("文件打開失敗");
while(!feof(fp))
{
fscanf(fp, "%s", filename);
printf("\n文件=%s\n", filename);
for (i=1; i<=3; i++)
{
s = getLineBuf(i, 1, 2 , filename);
printf("%s\n", s);
if (s)
{
free(s); //手動釋放內存,否則內存泄露
s = NULL;
}
}
}
fclose(fp);
system("del log.txt");
return 0;
}

⑤ C語言怎麼實現讀取txt文件中指定的數據

可以用fscanf讀取後 再判斷

比如

charname[100];
inta,b,stack_size;
FILE*fp;
fp=fopen("task.txt","r");//假定存在這個文件中。
while(~fscanf("%s%*d%*s%*d%d,%dK",name,&a,&b))
if(strcmp(name,"QQ.exe")==0)break;//找到一個就退出。如果要多個,可以自行優化。
stack_size=a*1000+b;//KBytes
...//處理
fclose(fp);

⑥ C程序怎樣從文件中讀某些特定字元串開頭的數據

每次讀一塊,如果是字元串形式的,那麼以%s讀取。
如果每個數據段是一行,那麼用fgets。
然後用strncmp去比較開頭部分數據,如果相同,則處理。否則拋棄。

⑦ c語言如何讀取文件中的特殊數據。

我的方法是採用fgetc()函數逐個讀取,遇到空格字元就將之前的內容保存到數組裡面,遇到換行符就參數歸零,在第二行重新讀取文件內容。比如說第一個空格之前的是配置項vertex
第二個空格之前的是配置內容1,第三個空格之前的是配置內容2,讀取完畢按照規則列印出來就行了,代碼我懶得寫了,希望你多多了解基本C庫函數,鍛煉自己的思路,C語言重要的是編程思想。
無論一個數據怎麼長,怎麼復雜,你都可以把他看成是一個個字元組成的,或者當成一個字元串。

⑧ 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語言怎麼實現從文件中讀取指定行內容

//假設一行的文本內容不超過1000字元,如果估計超過,請自行修改函數中的1000
//如果打不開文件,返回NULL
//如果文件不足n行,返回NULL
//如果正獲得正常數據,返回str的地址
char
*getfileline(char
*p,int
n,
char
*str){
FILE
*fp;
int
i;
if
((fp=fopen(p,"r"))==NULL){
printf("打開文件錯誤\n");
return
NULL;
}
for(i=1;i<n;i++)

⑩ C語言中如何讀取txt文件中指定的數據

//其中的in.txt就是你要讀取數據的文件,當然把它和程序放在同一目錄
-------------------------------------
#include
int
main()
{
int
data;
file
*fp=fopen("in.txt","r");
if(!fp)
{
printf("can't
open
file\n");
return
-1;
}
while(!feof(fp))
{
fscanf(fp,"%d",&data);
printf("%4d",data);
}
printf("\n");
fclose(fp);
return
0;
}