這裡蒐索程式師資訊,查找有用的技術資料
當前位置:首頁 » 編程語言 » C語言讀取有中文路徑的文件
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

C語言讀取有中文路徑的文件

發布時間: 2023-04-26 08:25:25

c語言讀取文本文件

1、C語言標准庫提供了一系列文件操作函數。文件操作函數一般以f+單詞的形式來命名(f是file的簡寫),其聲明位於stdio.h頭文件當中。例如:fopen、fclose函數用於文件打開與關閉;fscanf、fgets函數用於文件讀取;fprintf、fputs函數用於文件寫入;ftell、fseek函數用於文件操作位置的獲取與設置。
2、常式:

#include<stdio.h>
inta;
charb,c[100];
intmain(){
FILE*fp1=fopen("input.txt","r");//打開輸入文件
FILE*fp2=fopen("output.txt","w");//打開輸出文件
if(fp1==NULL||fp2==NULL){//若打開文件失敗則退出
puts("不能打開文件!");
rturn0;
}
fscanf(fp1,"%d",&a);//從輸入文件讀取一個整數
b=fgetc(fp1);//從輸入文件讀取一個字元
fgets(c,100,fp1);//從輸入文件讀取一行字元串

printf("%ld",ftell(fp1));//輸出fp1指針當前位置相對於文件首的偏移位元組數

fputs(c,fp2);//向輸出文件寫入一行字元串
fputc(b,fp2);//向輸出文件寫入一個字元
fprintf(fp2,"%d",a);//向輸出文件寫入一個整數

fclose(fp1);//關閉輸入文件
fclose(fp2);//關閉輸出文件,相當於保存
return0;
}

② C語言中如何讀取文件中的漢字並將其存入數組中

  1. 建立一個足夠大的字元型數組;

  2. 以文本方式讀打開原文件;

  3. 按字元方式讀取文件,每讀一個字元判斷一下是否為漢字編碼(<0),若是則存入字元數組,不是則跳過讀取下一個字元,直到文件結束。

設原文件在當前目錄下,名為123.txt,舉例代碼如下:

//#include"stdafx.h"//Ifthevc++6.0,withthisline.
#include"stdio.h"
#include"stdlib.h"
intmain(void){
chars[1000],ch;
FILE*fp;
inti=0;
if((fp=fopen("123.txt","r"))==NULL){
printf("Openthefilefailure... ");
exit(0);
}
while((ch=fgetc(fp))!=EOF)
if(ch<0)
s[i++]=ch;
fclose(fp);
s[i]='';
printf("%s ",s);//打出來看看
return0;
}

註:原文件內容是「fjkslauti我rophk134是2315學jkal 習C語言jks新da;jus手jfkdsla」

輸出是「我是學習語言新手」

③ C語言如何讀取指定路徑下的所有指定格式的文件

用C語言讀取目錄中的文件名的方法:
1、如果是在window環境下,可以用一下方法:
使用stdlib.h頭文件聲明的system()函數
_CRTIMP int __cdecl system (const char*);
system("dir c:\ /a:h /b > c:\dir.txt");
調用系統命令dir,把c:目錄下文件列表寫入文件dir.txt中

2、使用dirent.h頭文件中聲明的opendir(),readdir()函數;

intmain(intargc,char*argv[])
{
DIR*directory_pointer;
structdirent*entry;

if((directory_pointer=opendir("d:\XL"))==NULL)
printf("Erroropening ");
else
{
while((entry=readdir(directory_pointer))!=NULL)
{
printf("%s ",entry->d_name);
}
closedir(directory_pointer);

}
system("PAUSE");
return0;
}

3、如果沒有dirent.h,可以使用io.h頭文件中聲明的_findfirst(),_findnext()函數;
示例代碼:

intmain(intargc,char*argv[])
{
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);

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語言 怎麼讀取中文並顯示

#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 如何讀文件

在C語言開發中,想要讀入一個文件。C語言可以使用FILE文件操作進行高和肢讀取。下面小白就來簡單說說C語言如何讀取一個txt文件。

C語言讀取步驟一:首先需要以寫入的方式打開一個空白的texr.txt文件。FILE*fpWrite=fopen("text.txt";"w");

C語言讀取步驟二:打開以後,繼續進行循環寫入0到9的操作。代碼。

C語言讀取棚早步驟三:完成文件寫入操作後,一定戚世要記得對打開文件進行關閉操作。

C語言讀取步驟四:接下來對文件中寫入數據的讀取。首先需要創建一個用於保存讀取數據的數組。

C語言讀取步驟五:創建好數組以後,以讀取的方式對text.txt文件進行打開操作。

C語言讀取步驟六:最後,將讀取到的數據循環保存的創建好的數組中,並且將其顯示到控制台中。

⑦ 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語言中怎樣讀出有中文的文本文件

中文是佔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語言中如何調用文本文件

1、首先使用VS新建空工程,直接點擊確定。

⑩ c語言標准庫fopen函數如何打開中文文件名的文件

文件主名和擴展名可以使用的字元是:
英文字母:A—z(大小寫等價)

字:0—9


特殊符號:$#&@()-[]^~等。
各種控制字元和下列字元不能用在文件名中:<
>
/
\
:
"
*
?
//這些字元已做它用
文件名字母大小寫的區分:
DOS下文件名不區分大小寫。
在Windows系統下,顯示區分大小寫,讀寫操作時不區分。
在類Unix/Linux系統下,區分字母大小寫。
文件名長度的限制:
DOS下文件名長度應為
8.3
即8位文件名3位擴展名。
在Windows系統下,可以多個擴展名,以最後一個為准,文件名長度255。
在類Unix/Linux系統下,文件名長度255,帶路徑的長度1024,也有系統4096。
文件名可以直接寫進去函數里,也可以放在變數里:
FILE
*fp;
char
namein[]="abc.txt";
fp=fopen(namein,"r");

fp=fopen("abc.txt","r");
文件名若帶路徑,單反斜杠要寫成雙反斜杠,例如:
char
namein[]="C:\\path\\abc.txt";