c语言文件的操作
“字符形式读取全部字符串”
1.#include <stdio.h>
2.#include <stdlib.h>
3.#define N 100
4.int main() {
5.FILE fp;
6.char str[N + 1];
7.//判断文件是否打开失败
8.if ( (fp = fopen(“d:\demo.txt”, “rt”)) == NULL ) {
9.puts(“Fail to open file!”);
10.exit(0);
11.}
12.//循环读取文件的每一行数据
13.while( fgets(str, N, fp) != NULL ) {
14.printf("%s", str);
15.}//操作结束后关闭文件
16.fclose(fp);
17.return 0;
18.}
向文件中写入字符串:
#include<stdio.h>
int main() {
FILE fp;
char ch;
if((fp = fopen(“D:\6.txt”, “wt+”)) == NULL) {
puts(“Fail to open thaat 6.txt”);
}
printf(“Input a string:”);
while ((ch = getchar()) != ‘\n’) {
fputc(ch, fp);
}
fclose(fp);
return 0;
}
字符串形式
读取文件:(一行一行读取)
1.#include <stdio.h>
2.#include <stdlib.h>
3.#define N 100
4.int main(){
5.FILE *fp;
6.char str[N+1];
7.if( (fp=fopen(“d:\demo.txt”,“rt”)) == NULL ){
8.puts(“Fail to open file!”);
9.exit(0);
10.}
11.
12.while(fgets(str, N, fp) != NULL){
13.printf("%s", str);
14.}
15.
16.fclose(fp);
17.return 0;
18.}
向文件中追加信息:
1.#include<stdio.h>
2.int main(){
3.FILE *fp;
4.char str[102] = {0}, strTemp[100];
5.if( (fp=fopen(“D:\demo.txt”, “at+”)) == NULL ){
6.puts(“Fail to open file!”);
7.exit(0);
8.}
9.printf(“Input a string:”);
10.gets(strTemp);
11.strcat(str, “\n”);
12.strcat(str, strTemp);
13.fputs(str, fp);
14.fclose(fp);
15.return 0;
16.}
文件的函数:
Strcpy(a,b); 把b的内容复制到a。
int fseek( FILE *stream, long offset, int origin );
第一个参数stream为文件指针
第二个参数offset为偏移量,整数表示正向偏移,负数表示负向偏移
第三个参数origin设定从文件的哪里开始偏移,可能取值为:SEEK_CUR、 SEEK_END 或 SEEK_SET
SEEK_SET: 文件开头
SEEK_CUR: 当前位置
SEEK_END: 文件结尾
其中SEEK_SET,SEEK_CUR和SEEK_END和依次为0,1和2.
简而言之:
fseek(fp,100L,0);把fp指针移动到离文件开头100字节处;
fseek(fp,100L,1);把fp指针移动到离文件当前位置100字节处;
strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符’\0’为止,然后返回计数器值。
strcmp
C/C++函数,比较两个字符串。
设这两个字符串为str1,str2,
若str1==str2,则返回零;
若str1<str2,则返回负数;
若str1>str2,则返回正数。
从左到右,依次比较字母的ASCII码的大小,遇到不同字符或’\0’结束。
基本形式:strcmp(str1,str2)
str1=str2时,返回零;str1<str2时,返回负数;str1>str2时,返回正数。
比如Apple和Banana比较,先比较第一个字母A和B,A的ASCII码是65,B的是66,所以Apple<Banana。
compare和computer比较,前4个字母相同,第五个字母a和u,a的ASCII码是97,u的是117,所以compare<computer。