Ⅰ c語言中怎樣讀出有中文的文本文件
中文是佔2個字元,你的ch只有一個字元就換行了,所以打不出來,把列印時的換行去掉就行了
#include <stdio.h>
#include <stdlib.h>
main()
{
FILE *fp;
char ch;
if((fp=fopen("d:\\test.txt","r"))==NULL)
{
printf("file cannot open!");
exit(0);
}
ch=fgetc(fp);
while(!feof(fp))
{
printf("%c",ch); /*去掉換行*/
ch=fgetc(fp);
}
fclose(fp);
}
Ⅱ 在C語言中,怎樣讀取文本文檔的一個中文的字元串
就當一般的字元串一個字一個字地讀,讀到逗號為止。跟自己實現fgets()函數差不多。
enum { SIZE = 1024 };
char str[SIZE]; /* 聲明一個字元數組 */
/* 下面讀到逗號或數組最大值時停止 */
for (i = 0; i < SIZE - 1 && (c = getchar() ) != ','; ++i)
str[i] = c;
str[i] = '\0';
Ⅲ c語言 如何讀取中文字元串
可以使用輸入輸出重定向來將TXT文本中的字元內容導入程序中,或者使用標准C庫函數:fopen()和fgetc();
先使用fopen()函數打開TXT文本文件,然後使用fgetc讀取文本文件中的字元。讀取全部文本中全部字元可以使用一個while循環加判斷是否讀取到文件結尾來實現:
char ch;
while((ch= fgetc(fp)) != EOF)
這樣當讀取到文件結尾時,while循環就會終止。
C語文編寫編譯如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXLINE 100000
#define BUFLEN 1024
int main()
{
FILE *file;
char buf[BUFLEN];
int len=0,i=0;
char *array[MAXLINE];
file=fopen("test.txt","r");//打開TXST.TxT文件
if(!file)return -1;
while(fgets(buf,BUFLEN,file))//讀取TXT中字元
{
len=strlen(buf);
array[i]=(char*)malloc(len+1);
if(!array[i])break;
strcpy(array[i++],buf);
}
fclose(file);
i--;
while(i>=0&&array[i])
{
printf("%s\n",array[i]);//列印test文檔的字元
free(array[i--]);
}
}
Ⅳ C語言如何輸入中文
C語言中輸入中文,實際上就是輸入字元串,這個字元串可以是英文中文,數字都可以。
#include<stdio.h>
void
main()
{
char
string[100];//定義一個數組存放你輸入的字元串
scanf(string);//在鍵盤上輸入中文,輸入完回車就好
printf(「%s」string);//輸出你輸入的中文
}
Ⅳ c語言怎麼讀入中文,存儲完了又怎麼輸出該中文
1.首先文件的類型是file全是大寫的不是file可以解決你上面出現的問題
2.fscanf("%d",&n);
寫成
scanf("%d",&n);
3.程序的路邏輯我沒看,我給你編譯通過了,如果還有問題再問吧
Ⅵ c語言 怎麼讀文件中的漢字
字元讀寫函數fgetc和fputc
字元讀寫函數是以字元(位元組)為單位的讀寫函數。 每次可從文件讀出或向文件寫入一個字元。
1) 讀字元函數fgetc
fgetc函數的功能是從指定的文件中讀一個字元,函數調用的形式為:
字元變數=fgetc(文件指針);
例如:
ch=fgetc(fp);
其意義是從打開的文件fp中讀取一個字元並送入ch中。
對於fgetc函數的使用有以下幾點說明:
在fgetc函數調用中,讀取的文件必須是以讀或讀寫方式打開的。
讀取字元的結果也可以不向字元變數賦值。例如:fgetc(fp); 但是讀出的字元不能保存。
在文件內部有一個位置指針。用來指向文件的當前讀寫位元組。在文件打開時,該指針總是指向文件的第一個位元組。使用fgetc 函數後,該位置指針將向後移動一個位元組。 因此可連續多次使用fgetc函數,讀取多個字元。應注意文件指針和文件內部的位置指針不是一回事。文件指針是指向整個文件的,須在程序中定義說明,只要不重新賦值,文件指針的值是不變的。文件內部的位置指針用以指示文件內部的當前讀寫位置,每讀寫一次,該指針均向後移動,它不需在程序中定義說明,而是由系統自動設置的。
【例13-1】讀入文件c1.doc,在屏幕上輸出。#include<stdio.h>main(){ FILE *fp; char ch; if((fp=fopen("d:\\jrzh\\example\\c1.txt","rt"))==NULL){ printf("\nCannot open file strike any key exit!"); getch(); exit(1); } ch=fgetc(fp); while(ch!=EOF){ putchar(ch); ch=fgetc(fp); } fclose(fp);}
本常式序的功能是從文件中逐個讀取字元,在屏幕上顯示。程序定義了文件指針fp,以讀文本文件方式打開文件「d:\\jrzh\\example\\ex1_1.c」,並使fp指向該文件。如打開文件出錯,給出提示並退出程序。程序第10行先讀出一個字元,然後進入循環,只要讀出的字元不是文件結束標志(每個文件末有一結束標志EOF)就把該字元顯示在屏幕上,再讀入下一字元。每讀一次,文件內部的位置指針向後移動一個字元,文件結束時,該指針指向EOF。執行本程序將顯示整個文件。
2) 寫字元函數fputc
fputc函數的功能是把一個字元寫入指定的文件中。函數調用的形式為:
fputc( 字元量, 文件指針 );
其中,待寫入的字元量可以是字元常量或變數,例如:
fputc('a',fp);
其意義是把字元a寫入fp所指向的文件中。
對於fputc函數的使用也要說明幾點:
被寫入的文件可以用寫、讀寫、追加方式打開,用寫或讀寫方式打開一個已存在的文件時將清除原有的文件內容,寫入字元從文件首開始。如需保留原有文件內容,希望寫入的字元以文件末開始存放,必須以追加方式打開文件。被寫入的文件若不存在,則創建該文件。
每寫入一個字元,文件內部位置指針向後移動一個位元組。
fputc函數有一個返回值,如寫入成功則返回寫入的字元,否則返回一個EOF。可用此來判斷寫入是否成功。
Ⅶ C語言 怎麼讀取中文並顯示
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
intmain()
{
srand((unsigned)time(NULL));
inti,num;
chardraw[3][5]={"老虎","兔子","鴨子"};
for(i=0;i<5;i++)
{
num=rand()%3;
printf("%-3s ",draw[num]);
system("pause");
}
return0;
}
Ⅷ C語言文件操作,如何讀寫中文文本文件
你以什麼方式打開文件的~?如果是二進制的話那亂碼就是因為轉換字元錯誤。
先看一下輸入輸出方式是否與新的文本文件匹配,可能與文本的編碼方式有關。
另外看看你的數組設置,一般認為「一行」是第一個維度,「列」是第二個維度,「頁」是第三個維度。對於「一列」數據來說,它把每行的那個數據認為是一個一維數組(這個一維數組是一個行數組,只有一個數據,其餘為空),那個維度可以認為是空。
這里是一個模板,你試試~
FILE *fp1,*fp2;
char ch;
fp1=fopen("文件路徑,記得用轉義字元轉義斜線","r");
fp2=fopen("文件路徑,記得用轉義字元轉義斜線","a");
ch=fgetc(fp1);
while(ch!=EOF)
{
fputc(ch,fp2);
ch=fgetc(fp1);
}
fclose(fp1);
fclose(fp2);
//沒有加判斷文件指針獲取是否成功的驗證,如果需要,你自己加上就行
Ⅸ c語言中如何識別漢語
utf-8先轉unicode,然後判斷與127關系.
gbk系列判斷當前位元組<127則非中文,否則為中文,並跳過2位元組。
gbk編碼
if (*((BYTE*)str+i) > 0x80 && *((BYTE*)str+i+1) > 0x40)
\\ 中文.
Ⅹ C語言如何讀取TXT中的中文字元串
#include<stdio.h>
intmain(void)
{
FILE*p;
charch;
p=fopen("a.txt","r");
while(!feof(p))
{
if(fgetc(p)=='>')
{
while((ch=fgetc(p))!='<')
{
putchar(ch);
}
printf(" ");
}
}
fclose(p);
return0;
}
//昨天我說了沒編譯估計會出錯,這次沒事了運行通過
//還有隻能讀英文,喬丹不行,這是因為c編譯器不支持unicode編碼,char類型的是只能表示128個字元,Unicode是兩個位元組,可以表示漢字。