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

c語言怎麼讀取句子

發布時間: 2022-09-28 08:38:40

1. 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;
}

2. 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("無法打開文本文件. ");

}

3. C語言怎樣讀取文本的每一行

FILE *fin;
char *one_line;
one_line = (char*)malloc( MAX_LINE_SIZE * sizeof(char) );
if((fin = fopen(argv[1], "r"))==NULL)
{
printf("can not open file %s !\n", argv[1]);
exit(-1);
}

while( fgets(one_line, MAX_LINE_SIZE, fin) != NULL )
{
printf("讀一行列印一行%s",one_line);

}

fclose(fin);

4. C語言如何讀取文件中的內容一直讀到結尾,每次讀5個字(包括標點符號)

先要打開文件,使用fopen,fread讀取文件內容,判斷文件尾的方法我忘掉了,軀體你查查,讀到內存buffer中,再顯示出來,釋放內存空間,關閉文件。基本上就這些步驟。

5. C語言如何讀取txt文本裡面的內容

C語言可以使用fopen()函數讀取txt文本里。

示例:

#include <stdio.h>

FILE *stream, *stream2;

void main( void )

{

int numclosed;

/* Open for read (will fail if file "data" does not exist) */

if( (stream = fopen( "data", "r" )) == NULL )

printf( "The file 'data' was not opened " );

else

printf( "The file 'data' was opened " );

/* Open for write */

if( (stream2 = fopen( "data2", "w+" )) == NULL )

printf( "The file 'data2' was not opened " );

else

printf( "The file 'data2' was opened " );

/* Close stream */

if(fclose( stream2 ))

printf( "The file 'data2' was not closed " );

/* All other files are closed: */

numclosed = _fcloseall( );

printf( "Number of files closed by _fcloseall: %u ", numclosed );

}

(5)c語言怎麼讀取句子擴展閱讀

使用fgetc函數

#include <stdio.h>

#include <stdlib.h>

void main( void )

{

FILE *stream;

char buffer[81];

int i, ch;

/* Open file to read line from: */

if( (stream = fopen( "fgetc.c", "r" )) == NULL )

exit( 0 );

/* Read in first 80 characters and place them in "buffer": */

ch = fgetc( stream );

for( i=0; (i < 80 ) && ( feof( stream ) == 0 ); i++ )

{

buffer[i] = (char)ch;

ch = fgetc( stream );

}

/* Add null to end string */

buffer[i] = '';

printf( "%s ", buffer );

fclose( stream );

}

6. c語言怎樣按行讀取

區分讀取的源,有如下兩種情況:

1 從標准輸入讀取,即stdin。
可以使用gets函數:
char * gets(char *str);
該函數會從標准輸入中讀取一行數據,直到讀到\n,並將\n替換為字元串結束符\0,讀取到的數據以字元串形式存於str中。
需要注意的是,使用gets函數時,需要確保str指向空間大小,必須超過任意一行的長度,否則會出現越界操作。有些編譯器會報gets是不安全的,就是這個原因。

2 從文件讀取。
對於一個被打開的文件,如果其是可讀的,那麼可以通過fgets函數實現按行讀取。
char *fgets(char *buf, int bufsize, FILE *fp);
功能與gets類似,只是源不同。fgets從fp中讀一行數據存到buf中,同時會判斷bufsize,如果一行數據的長度超過了bufsize,那麼只讀入bufsize長度的數據,確保不會溢出。否則讀取整行。
由於在C語言中,標准輸入stdin也是以文件指針形式存在的,所以gets可以用
fgets(str, bufsize, stdin);
替代,這樣代碼量稍多一些,但可以更安全。

7. C語言怎樣讀取文本的每一行

可以使用fgets函數來實現。

1 函數名:
fgets
2 聲明形式:
char *fgets(char *buf, int bufsize, FILE *stream);
3 頭文件:
stdio.h

4 功能及參數說明:
從stream中讀取一行數據存到buf中。如果數據長度小於bufsize,那麼讀入整行數據,並將換行符轉換為字元串結束符\0。 如果數據長度超過bufsize,那麼只讀入bufsize大小的數據,並在結尾添加\0。
5 返回值:
成功,則返回第一個參數buf;
在讀字元時遇到end-of-file,則eof指示器被設置,如果還沒讀入任何字元就遇到這種情況,則buf保持原來的內容,返回NULL;
如果發生讀入錯誤,error指示器被設置,返回NULL,buf的值可能被改變。

8. C語言中讀取應該用什麼語句呢,是printf還是scanf

scanf() 是接受輸入
printf()是列印輸出的

舉例scanf()和printf()的用法:
#include<stdio.h>
void main(){
int a;
printf("請輸入一個值:");
scanf("%d",&a);

printf("您輸入的值為:%d",a);
exit(0);
}
懂了嗎?

9. 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++)

10. C語言文件的文本怎麼讀取

根據你給的文件保存的數據的格式,我猜測每一行是一個學生的信息,格式如下:

序號 姓名 成績1 成績2 成績3 ...

知道了題意和題目要求,那麼一切將會變得簡單起來,請看代碼。

#include<stdio.h>

#defineREAD_FILE"data.txt"/*要讀取的文件的名字*/
#defineWRITE_FILE"T_data.txt"/*要寫入的文件的名字*/
#defineSTU_NUM10/*最大學生人數*/
#defineMAX_LEN50/*一行的最大字元數*/
/*
*獲取總分函數
*/
intget_sum(charconst*msg){

intsum=0;
inttmp;
/*
*遍歷一行字元
*/
while(*msg!=''){

/*
*以空格為一項成績的分隔標志
*/
tmp=0;
while(*msg!=''&&*msg!=''){
/*
*char類型數字轉int類型數字
*/
tmp=(tmp*10)+((*msg)-'0');
msg++;
}
/*
*求總和
*/
sum+=tmp;
if(*msg==''){

break;
}
msg++;
}
returnsum;
}

intmain(void){

FILE*rfp,*wfp;/*聲明讀取/寫入文件指針*/
charstudent[STU_NUM][MAX_LEN];/*存放讀取到的數據緩存數組*/
charch;
intsum[STU_NUM];/*成績總和*/
inti=0;
intj=0;
intk=0;
rfp=fopen(READ_FILE,"r");/*打開數據文件*/
if(rfp==NULL){

perror(READ_FILE);
exit(1);
}
for(i=0;i<STU_NUM;i++){

sum[i]=0;
}
/*
*逐個字元讀取文件的內容,
*直至遇到文件結束符為止。
*/
i=0;
while((ch=fgetc(rfp))!=EOF){
/*
*遇到換行符表示已經讀取完一個學生的資料;
*否則繼續將數據寫入緩存數組中。
*/
if(ch==' '){

student[i][j]='';
j=0;
i+=1;
}else{

student[i][j++]=ch;
}
}
student[i][j]='';
wfp=fopen(WRITE_FILE,"w");
/*
*開始分析數據
*根據文件存放數據的格式,從下標為2的位置開始分析數據。
*當遇到空格時證明後面的數據是成績,每一科成績分數均以空格分開。
*printf是顯示出來。
*fprintf是寫入另一個文件。
*/
for(j=0;j<=i;j++){

k=2;
printf("%c%c",student[j][0],student[j][1]);
fprintf(wfp,"%c%c",student[j][0],student[j][1]);
while(student[j][k]!=''){

printf("%c",student[j][k]);
fprintf(wfp,"%c",student[j][k]);
k++;
}
printf("'ssumofscoresumis");
fprintf(wfp,"'ssumofscoresumis");
sum[j]=get_sum(&student[j][k]);
printf("%d ",sum[j]);
fprintf(wfp,"%d ",sum[j]);
}
/*
*記得關閉文件哦。
*/
fclose(rfp);
fclose(wfp);
return0;
}

以下是運行結果:

這個程序僅僅是針對你的題目要求來的,文件存放的數據格式不能更改,否則會出錯。每一行必須以回車鍵結束,最後一行的最後一個字元之後什麼也不能有。我盡量以你看得懂的方法來寫,關鍵部分都帶有注釋,有問題不要追問了,自己多思考思考,實在解決不來還是很歡迎可以追問的哦,哈哈哈!!!