當前位置:首頁 » 編程語言 » c語言文件管理

c語言文件管理

發布時間: 2024-10-31 22:09:27

❶ 怎樣用c語言保存一個文件

在C語言中,文件有多種讀寫方式,可以一個字元一個字元地讀取,也可以讀取一整行,還可以讀取若干個位元組。文件的讀寫位置也非常靈活,可以從文件開頭讀取,也可以從中間位置讀取。

在C語言中,二進制方式很簡單,讀文件時,會原封不動的讀出文件的全部內容,寫的時候,也是把內存緩沖區的內容原封不動的寫到文件中。

而對文本文件的處理就不一樣了。Windows 和 DOS 下的文本文件以CRLF(0X0D 0X0A)作為換行符,而C語言本身以LF(0X0A)作為換行符,所以以文本方式寫入數據時,會將LF(0X0A)替換為CRLF(0X0D 0X0A),而讀取數據時又會替換回來。

CR(0X0D)表示回車符,也就是 ' ';CL(0X0A)表示換行符,也就是 ' '。在Linux和其他一些系統中,文本文件的換行符就是LF(0X0A),與C語言的換行符一樣。所以也就沒有了文本方式和二進制方式的區分,使不使用'b'標志都是一樣的。

(1)c語言文件管理擴展閱讀

C語言中文件的讀取和寫入

在C語言中寫文件

//獲取文件指針FILE *pFile = fopen("1.txt", //打開文件的名稱

"w"); // 文件打開方式 如果原來有內容也會銷毀//向文件寫數據fwrite ("hello", //要輸入的文字

//文字每一項的大小 以為這里是字元型的 就設置為1 如果是漢字就設置為4

strlog("hello"), //單元個數 我們也可以直接寫5

pFile //我們剛剛獲得到的地址 );//fclose(pFile); //告訴系統我們文件寫完了數據更新,但是我們要要重新打開才能在寫fflush(pFile); //數據刷新 數據立即更新

❷ 什麼手機軟體能看c語言文件

可以下載C語言學習的APP進行查看。

解決這個問題的方法如下:

1、首先點擊打開C語言學習軟體。

❸ C語言庫文件(頭文件)有哪些

下面給出Turbo C的全部".h"文件。Turbo C頭文件:

頭文件
說明

alloc.h 說明內存管理函數(分配、釋放等)。
assert.h 定義 assert調試宏。
bios.h 說明調用IBM—PC ROM BIOS子程序的各個函數。
conio.h 說明調用DOS控制台I/O子程序的各個函數。
ctype.h 包含有關字元分類及轉換的名類信息(如 isalpha和toascii等)。
dir.h 包含有關目錄和路徑的結構、宏定義和函數。
dos.h 定義和說明MSDOS和8086調用的一些常量和函數。
error.h 定義錯誤代碼的助記符。
fcntl.h 定義在與open庫子程序連接時的符號常量。
float.h 包含有關浮點運算的一些參數和函數。
graphics.h 說明有關圖形功能的各個函數,圖形錯誤代碼的常量定義,正對不同驅動程序的各種顏色值,及函數用到的一些特殊結構。
io.h 包含低級I/O子程序的結構和說明。
limit.h 包含各環境參數、編譯時間限制、數的范圍等信息。
math.h 說明數學運算函數,還定了 HUGE VAL 宏, 說明了matherr和matherr子程序用到的特殊結構。
mem.h 說明一些內存操作函數(其中大多數也在STRING.H中說明)。
process.h 說明進程管理的各個函數,spawn…和EXEC …函數的結構說明。
setjmp.h 定義longjmp和setjmp函數用到的jmp buf類型,說明這兩個函數。
share.h 定義文件共享函數的參數。
signal.h 定義SIG[ZZ(Z] [ZZ)]IGN和SIG[ZZ(Z] [ZZ)]DFL常量,說明rajse和signal兩個函數。
stddef.h 定義讀函數參數表的宏。(如vprintf,vscarf函數)。
stddef.h 定義一些公共數據類型和宏。
stdio.h 定義Kernighan和Ritchie在Unix System V 中定義的標准和擴展的類型和宏。還定義標准I/O 預定義流:stdin,stdout和stderr,說明 I/O流子程序。
stdlib.h 說明一些常用的子程序:轉換子程序、搜索/ 排序子程序等。
string.h 說明一些串操作和內存操作函數。
sys\stat.h 定義在打開和創建文件時用到的一些符號常量。
sys\types.h 說明ftime函數和timeb結構。
sys\time.h 定義時間的類型time[ZZ(Z] [ZZ)]t。
time.h 定義時間轉換子程序asctime、localtime和gmtime的結構,ctime、 difftime、 gmtime、 localtime和stime用到的類型,並提供這些函數的原型。
value.h 定義一些重要常量,包括依賴於機器硬體的和為與Unix System V相兼容而說明的一些常量,包括浮點和雙精度值的范圍。C系統提供了豐富的系統文件,稱為庫文件。C的庫文件分為兩類,一類是擴展名為".h"的文件,稱為頭文件,在前面的包含命令中我們已多次使用過。在".h"文件中包含了常量定義、 類型定義、宏定義、函數原型以及各種編譯選擇設置等信息。另一類是函數庫,包括了各種函數的目標代碼,供用戶在程序中調用。通常在程序中調用一個庫函數時,要在調用之前包含該函數原型所在的".h" 文件。

❹ 如何用c語言製作一個學生信息管理系統,要求以文件形式保存

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

//鏈表結點結構體聲明

typedef struct subjects

{

char name[20];

float score;

}sub;

typedef struct student

{

int num;

char name[20];

sub subject[3];

struct student* next;

}stu,*pstu;

#define SIZE sizeof(stu)

//函數申明

pstu LoadInfo();

void PrintMenu();

pstu AddStu(pstu );

pstu DeleStu(pstu );

pstu RwrStu(pstu );

void FindStu(pstu , char );

void Count(pstu ,char * ,float ,float );

void Rank(pstu ,char * );

void SaveQuit(pstu );

//創建菜單,進入選擇循環

while(1)

{

PrintMenu();

printf("請輸入您的選擇編號:");

scanf("%d",&n);

getchar();

switch(n)

{

case 1:

{

system("cls");

j=0;

while(4!=j)

{

printf("歡迎進入信息管理版塊! ");

printf("25 1、添加學生 ");

printf("25 2、刪除學生 ");

printf("25 3、修改學生信息 ");

printf("25 4、返回 ");

printf("請輸入您的選擇編號: ");

scanf("%d",&j);

getchar();

if ( 1 == j) head = AddStu(head);

else if( 2 == j) head = DeleStu(head);

else if( 3 == j) head = RwrStu(head);

else if( 4 == j) ;

else printf("輸入有誤,請重新輸入! ");

}

case 2:

{

//信息查詢

system("cls");

printf("歡迎進入信息查詢版塊! ");

printf("請輸入要查詢的學生編號:");

scanf("%d",&j);

getchar();

//printf("%d ",j); //檢測輸入是否成功,調試程序用

FindStu(head,j); //查詢並輸出

printf(" 請輸入回車鍵返回主菜單!");

getchar();

system("cls");

break;

}

(4)c語言文件管理擴展閱讀:

C語言包含的各種控制語句僅有9種,關鍵字也只有32 個,程序的編寫要求不嚴格且以小寫字母為主,對許多不必要的部分進行了精簡。

實際上,語句構成與硬體有關聯的較少,且C語言本身不提供與硬體相關的輸入輸出、文件管理等功能,如需此類功能,需要通過配合編譯系統所支持的各類庫進行編程,故c語言擁有非常簡潔的編譯系統。

❺ c語言學生管理系統,保存和讀取文件模塊有錯誤,寫在txt中的正常,但是讀出來就有問題了

你的open()函數有幾個問題,其中1和2是你的問題的主要原因。

1. 作為while循環判斷條件的fgetc()函數從文件流讀取了一個字元,移動了文件流的讀取指針,導致文件數據並沒有全部由fscanf()函數讀取。

2. 沒有判斷fscanf()函數的返回值,如果出現讀取失敗、讀不全8項數據等情況,仍然認為數據是有效的。

3. 如果打開文件失敗,一開始分配的內存沒有釋放。

4. 如果打開文件成功但文件為空(while循環體一次都沒有執行),一開始分配的內存釋放了,但head還是指向這個已經釋放的內存空間。

5. 估計你的struct student里各個成員變數是字元數組,如果是這樣的話,fscanf()函數里引用這些成員變數時不需要加'&'。(但這個只是個warning,不是error)。

試試這個open()函數。

void open()
{
FILE *fp;
struct student *p1, *p2;
int ret;
/* 讀取文件前先把鏈表頭設為NULL,表示鏈表為空 */
head = NULL;
/* 嘗試打開文件 */
fp = fopen("student.txt", "r");
if (fp == NULL)
{
printf("打開文件失敗! ");
return;
}
/* p1指向鏈表最後一個有效的元素,目前為NULL */
p1 = NULL;
/* 為鏈表第一個元素分配內存,並把鏈表頭指向該元素 */
head = p2 = (struct student *)malloc(sizeof(struct student));
while (1)
{
ret = fscanf(fp, "%s %s %s %s %s %s %s %s",
p2->student_id, p2->name, p2->age, p2->gender,
p2->born, p2->address, p2->number, p2->E_mail);
/* 如果fscanf()沒有讀取8項數據,就認為是失敗 */
if (ret != 8)
{
/* 如果這是鏈表第一個元素,則把鏈表頭設為NULL */
if (head == p2)
head = NULL;
/* 如果前一個元素非空,則把它的next指針設為NULL,表示鏈表結束 */
if (p1 != NULL)
p1->next = NULL;
/* 釋放當前元素的內存 */
free(p2);
/* 退出循環 */
break;
}
/* p1指向鏈表最後一個有效的元素 */
p1 = p2;
/* 為下一個元素分配內存 */
p2 = (struct student *)malloc(sizeof(struct student));
p1->next = p2;
}
fclose(fp);
printf("成功打開文件! ");
}
熱點內容
搭建web驗證伺服器地址 發布:2024-11-01 00:09:57 瀏覽:623
拼車網源碼 發布:2024-11-01 00:09:48 瀏覽:898
資料庫事務sql 發布:2024-11-01 00:09:47 瀏覽:722
安卓系統底部三個按鍵怎麼設置 發布:2024-11-01 00:08:08 瀏覽:90
鎖定ip地址伺服器 發布:2024-11-01 00:02:02 瀏覽:223
編程串聯 發布:2024-11-01 00:01:55 瀏覽:177
緩存轉碼軟體 發布:2024-11-01 00:00:47 瀏覽:586
資料庫存儲過程聲明部分 發布:2024-10-31 23:42:24 瀏覽:297
資料庫無冗餘 發布:2024-10-31 23:30:33 瀏覽:944
茄子存儲 發布:2024-10-31 23:22:47 瀏覽:558