重点回顾
关于*p++与*(p++)
#include <stdio.h>
int main()
{
int i=8;
int a;
a=(i++);
i=i++;
printf("%d\n",a);
printf("%d\n",i);
int b[]={1,33,3,4,5};
int *p=b;
printf("%d ",*p++);
printf("%d ",*p);
printf("%d ",*(p++));
printf("%d ",*p);
}
结论:无区别
判断文本内字符
#include <stdio.h>
int main()
{
FILE *fp=NULL;
char ch;
int num=0;
int a=0;
int A=0;
int els=0;
int arr[50];
printf("请输入追加的字符串:");
scanf("%s",arr);
fp=fopen("tst.txt","a");
fprintf(fp,"%s",arr);
fclose(fp);
fp=fopen("tst.txt","r");
// ch=fgetc(fp);
fscanf(fp,"%c",&ch);
while(ch!=EOF)
{
printf("%c",ch);
if(ch>='0'&&ch<='9')
num++;
else if(ch>='a'&&ch<='z')
a++;
else if(ch>='A'&&ch<='Z')
A++;
else
els++;
ch=fgetc(fp);
}
fclose(fp);
printf("\n");
printf("num=%d a=%d A=%d 其他=%d",num,a,A,els);
return 0;
}
关于feof的返回值
#include <stdio.h>
int main()
{
FILE *fp=NULL;
char ch[20];
fp=fopen("tst.txt","r");
int i=0;
while(!feof(fp))
{
ch[i]=fgetc(fp);
printf("返回值%d ",feof(fp));
printf("%c\n",ch[i]);
i++;
}
return 0;
}
参数为文件指针,未到文件末尾返回0,其他返回非0
三种输入输出方式
#include <stdio.h>
int main()
{
FILE *fp=NULL;
fp=fopen("tst.txt","w+");
// fputs("七里香",fp);
// fprintf(fp,"%s","釜山不行");
char a[]="九百九十九朵玫瑰";
fwrite(a,2,8,fp);
printf("光标所在的位置%d\n",ftell(fp));
rewind(fp);
printf("复位后光标所在的位置%d\n",ftell(fp));
char ch[20];
// fread(ch,2,8,fp);
fgets(ch,"%s",fp);
// fscanf(fp,"%s",ch);
puts(ch);
printf("ferror的返回值%d\n",ferror(fp));
fclose(fp);
return 0;
}
rewind函数 参数为文件指针,将光标移动到开始位置
合并2个文本字符串并排序
#include <stdio.h>
#include <string.h>
int main()
{
FILE *fp=NULL;
fp=fopen("a.txt","w+");
fprintf(fp,"%s","ifysaydcgfuy");
char a[100];
rewind(fp);
fscanf(fp,"%s",a);
fclose(fp);
fp=fopen("b.txt","w+");
fprintf(fp,"%s","ksdjvbskb");
char b[30];
rewind(fp);
fscanf(fp,"%s",b);//fscanf(fp,"%s",a+j);
fclose(fp);
int i,j,c;
j=strlen(a);
c=strlen(b);
for(i=j;i<j+c;i++)
{
a[i]=b[i-j];
}
puts(a);
char ch;
int g;
for(i=0;i<j+c;i++)
{
for(g=0;g<j+c-1;g++)
{
if(a[g]>a[g+1])
{
ch=a[g];
a[g]=a[g+1];
a[g+1]=ch;
}
}
}
puts(a);
fp=fopen("c.txt","w");
fprintf(fp,"%s",a);
fclose(fp);
return 0;
}