c語言文件操作
❶ c語言 文件操作
文件擴展名不要用.dll, .dll 是默認動態鏈接庫擴展名。
fopen("count.dat","r+");
或 "rb+".
r+ 表示打開已存在文件進行讀寫和更新。
(第一次運行用w,或先建一個空文件,不讀,只寫)。
如果用binary文件,用"rb+", 文本文件用"r+"
打開方式不同,讀寫命令不同。
fwrite 用於binary文件,用"rb+" 和 第一次用"wb" 打開.
❷ C語言文件操作
額,感覺用到的是在一些有很多輸入的情況下,或者不需要人工輸入,直接將輸入的內容放進一個文件。剛學c的話,文件操作只是做個了解目的,真正要用到的時候都是在實際項目中才有。
❸ c語言文件操作
// ReadChinese.cpp: 定義控制台應用程序的入口點。
// visual studio 2007
#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
#include <wchar.h>
#include <locale.h>
int main(int argc, char *argv[])
{
setlocale(LC_ALL, "");
//wchar_t out[100] = L"中文數組";
//printf("%ls\n", out);
wchar_t out[1000];
char src[1000] = { 0 };
FILE *fp = fopen("in.txt", "r");
if (!fp)
{
printf("%s\n", "can not open file in.txt");
return 1;
}
fread((void *)&src[0], sizeof(char), 1000, fp);
fclose(fp);
mbstowcs(out, src, 1000);
printf("%ls\n", out);
return 0;
}
❹ 關於文件操作(C語言)
首先,這段程序是通過 輸入文件路徑及文件名來打開文件;
filename[10];這個字元型數組是用來存方輸入的文件路徑及文件名的(注意,數組大小為10,因此輸入的路徑和文件名不能超過10個字元)
fopen(「c:\\a.txt」,「r」)函數的兩個參數中第一個參數是文件的路徑及文件名,第二個是文件的打開方式(這里不多說了)。
程序中 scanf("%s",filename);是讓你輸入文件路徑:里如你將c:\\a.txt存放在數組filename[10]中.
在if((fp=fopen(filename,"w"))==NULL)中,filename你已經知道,它代表數組的首地址,而且他也代表字元串!關於這一點,他就與:printf(「%s」,filename)類似,filename可以代表這個字元串。
這樣以來,if((fp=fopen(filename,"w"))==NULL)就等價於
if((fp=fopen(「c:\\a.txt」,"w"))==NULL)
明白了嗎?
❺ C語言對文件的操作
可以考慮用rw
一般為保險起見,需要打開原始文件讀,新打開文件寫,完成後將原始文件改名為.bak後綴,新文件改名為原始文件名
❻ c語言有關文件操作
最BS樓上__abc這種直接拿到詞霸里翻譯,看都不看結果就貼上來的人。
==========================
代碼部分我在完善中,已經可以順利讀取ID3信息。
基本完工後我會貼到空間里,隨後轉貼過來。
P.S.15分有點少……
==========================
完成:http://hi..com/crazycola/blog/item/45e816fd9d7e2b1509244d34.html
完整代碼:
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#define MAXFILENAME 256
typedef struct tag_id3v1 {
char title[31];
char artist[31];
char album[31];
char year[5];
char comment[31];
char genre;
} TAG_ID3V1;
char* genre_id3v1[] = {
"Blues", "Classic Rock", "Country", "Dance", "Disco", // 00-04 // 代碼開放,禁止抄襲,轉載請註明hi..com/crazycola原創
"Funk", "Grunge", "Hip-Hop", "Jazz", "Metal", // 05-09
"New Age", "Oldies", "Other", "Pop", "R&B", // 10-14
"Rap", "Reggae", "Rock", "Techno", "Instrial", // 15-19
"Alternative", "Ska", "Death Metal", "Pranks", "Soundtrack", // 20-24
"Euro-Techno", "Ambient", "Trip-Hop", "Vocal", "Jazz+Funk", // 25-29
"Fusion", "Trance", "Classical", "Instrumental", "Acid", // 30-34
"House", "Game", "Sound Clip", "Gospel", "Noise", // 35-39
"AlternRock", "Bass", "Soul", "Punk", "Space", // 40-44
"Meditative", "Instrumental Pop", "Instrumental Rock", "Ethnic", "Gothic", // 45-49
"Darkwave", "Techno-Instrial", "Electronic", "Pop-Folk", "Eurodance", // 50-54 // 代碼開放,禁止抄襲,轉載請註明hi..com/crazycola原創
"Dream", "Southern Rock", "Comedy", "Cult", "Gangsta", // 55-59
"Top 40", "Christian Rap", "Pop/Funk", "Jungle", "Native American", // 60-64
"Cabaret", "New Wave", "Psychadelic", "Rave", "Showtunes", // 65-69
"Trailer", "Lo-Fi", "Tribal", "Acid Punk", "Acid Jazz", // 70-74
"Polka", "Retro", "Musical", "Rock & Roll", "Hard Rock" // 75-79
};// 代碼開放,禁止抄襲,轉載請註明hi..com/crazycola原創
void info( FILE* fp, char* target, int size )
{
char* strtmp = NULL;
int num_read = 0;
strtmp = (char*)malloc((size+1)*sizeof(char));
num_read = fread( strtmp, sizeof(char), size, fp );
strtmp[num_read]='\0';
strcpy( target, strtmp );
free(strtmp); strtmp=NULL;
}
void getID3v1( FILE* fp, TAG_ID3V1* tag )
{
// make sure fp and tag are both correct pointers
info( fp, tag->title, 30 );
info( fp, tag->artist, 30 );
info( fp, tag->album, 30 );
info( fp, tag->year, 4 );
info( fp, tag->comment, 30 );
tag->genre = fgetc(fp);
}
void main()
{
char* fname = NULL;
char* strtmp = NULL;
char ext[5] = ".mp3";
FILE* fp = NULL;
// 代碼開放,禁止抄襲,轉載請註明hi..com/crazycola原創
int i, ch, c_yesno = 0;
int num_read = 0;
while( c_yesno != 27 )
{
fname = (char*)malloc(MAXFILENAME*sizeof(char));
do {
system("cls");
printf( "Enter filename: " );
for( i = 0; (i < MAXFILENAME) && ((ch = getchar()) != EOF)
&& (ch != '\n'); i++ )
fname[i] = (char)ch;
fname[i] = '\0';
} while(fname[0]=='\0');
// 代碼開放,禁止抄襲,轉載請註明hi..com/crazycola原創
if( strlen(fname)<5 )
{
printf("Error: filename too short.\n");
free(fname); fname=NULL;
printf("\nPress any key to re-enter... ");
getch(); continue; // exit(-1);
} else {
strtmp = (char*)malloc(5*sizeof(char));
for( i=0; i<4; i++ )
strtmp[i] = fname[strlen(fname)-4+i];
strtmp[i]='\0';
if( stricmp( strtmp, ext ) != 0 )
{ // 代碼開放,禁止抄襲,轉載請註明hi..com/crazycola原創
printf("Error: file may not be a MP3(MPEG Layer-3) file.\n");
free(fname); fname=NULL;
free(strtmp); strtmp=NULL;
printf("\nPress any key to re-enter... ");
getch(); continue; // exit(-2);
} else {
free(strtmp); strtmp=NULL;
if( ( fp = fopen( fname, "rb" ) ) == NULL )
{ // 代碼開放,禁止抄襲,轉載請註明hi..com/crazycola原創
printf("Error: failed to open file: %s\n", fname );
free(fname); fname=NULL;
printf("\nPress any key to re-enter... ");
getch(); continue; // exit(-3);
} else {
fseek( fp, -128, SEEK_END );
strtmp = (char*)malloc(4*sizeof(char));
num_read = fread( strtmp, sizeof(char), 3, fp );
// if fread fails.. do something here
strtmp[num_read]='\0';
if( stricmp( strtmp, "TAG" ) != 0 )
{ // 代碼開放,禁止抄襲,轉載請註明hi..com/crazycola原創
printf("Error: failed to load ID3v1 infomation from file: %s\n", fname );
free(strtmp); strtmp=NULL;
free(fname); fname=NULL;
printf("\nPress any key to re-enter... ");
getch(); continue; // exit(-4);
} else {
TAG_ID3V1 tag;
free(strtmp); strtmp=NULL;
getID3v1( fp, &tag );
free(strtmp); strtmp=NULL;
printf("\nID3v1 Infomation:\n");
printf("Title: %s\n",tag.title);
printf("Artist: %s\n",tag.artist);
printf("Album: %s\n",tag.album);
printf("Year: %s\n",tag.year);
printf("Comment: %s\n",tag.comment);
i=(int)(tag.genre);
printf("Genre: [%d] %s\n",i,(0<i&&i<80)?genre_id3v1[i]:"<Undefined>");
}
// 代碼開放,禁止抄襲,轉載請註明hi..com/crazycola原創
free(fname); fname=NULL;
fclose(fp);
} // else( ( fp = fopen( fname, "rb" ) ) == NULL )
} // else( stricmp( strtmp, ext ) != 0 )
} // else( strlen(fname)<5 )
printf("\nEnter again? (ESC or Ctrl+C to abort) ");
c_yesno = getch();
}// while( c_yesno != 27 )
} // main
❼ C語言文件操作
fgets函數的一個參數就是接收數據的緩存,可以是堆棧或者是堆中一塊內存。
第一種使用char str[30];,字元數組,就是一塊堆棧內存,其中數組名str就是指向第一個元素的字元指針。可以這樣使用 char* p=str;
你用*str,則表示str指向的字元值,並不是內存地址(指針);另主要的原因是這個字元值可能並不是一塊有效內存地址。fgets寫入數據必然異常。
第二種char *str;str是一個指針變數,沒有初始化,沒有指向一塊有效的內存地址,fgets填充數據到它指向的內存,肯定會異常的。
❽ C語言的文件操作
把所有的這個
fputs("c",fp);
改成fputs(c,fp);
❾ C語言文件操作的的概念
fprintf
fscanf這兩個函數,你跟printf以及scanf對比
printf函數都是寫入,fprintf是輸出到文件流,printf是輸出到屏幕
scanf相反
❿ C語言寫入文件,文件操作
//1樓回答的太多了
//看我的
#include<stdio.h>
#include <string.h>
main()
{
int flag=0;
FILE *fp;
char *p,strline[100]="\0",strinfo[100]="\0";
fp=fopen("data.txt","r");
puts("Please input ID");
gets(strinfo); //獲取用戶輸入的ID
while (fgets(strline,99,fp)) //循環讀每行用戶信息
{
if ((p=strstr(strline,strinfo))!=NULL) //用strstr函數檢查是否用戶信息中有用戶輸入的ID
{
flag=1;
puts("此人信息已存在"); //提示存在
}
}
if (flag==0)
{
puts("無此人信息");
}
}