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("无此人信息");
}
}