在main函数中创建一个文件,将键盘输入的字符串(该字符串只包含数字、字母和*)写入文件中。打开该文件,读出字符串。若字符串中*号多于n个,则删除多余的*号;若少于或等于n个,则输出*号的个数,并将新串存放到另一个文件中。要求:n由键盘输入。
/* Note:Your choice is C IDE */
#include "stdio.h"
#include <stdlib.h>
void main()
{
FILE *fp;
char c;
char str[100]={'\0'};
char str1[100]={'\0'};
int i=0;
int j=0;
int k=0;
fp = fopen("d:\\test.txt","r");
c=fgetc(fp);
str[i++]=c;
while(c !=EOF){
c=fgetc(fp);
str[i++]=c;
}
//关闭
fclose(fp);
for(j=0;j<i;j++){
if(j==0 || j==i-2){
str1[k++] = str[j];
}else if(str[j]!='*'){
str1[k++]=str[j];
}
}
puts(str1);
//保存文件
if (!(fp = fopen("d:\\test.txt","w+")))
{
printf("test.txt打开失败\n");
return 0;
}
fwrite(str1,1,k,fp);
fclose(fp);
}
代码如下,如有帮助,请采纳一下,谢谢。
#include <stdio.h>
#include <string.h>
void main()
{
FILE* fp;
char buf[1024] = {0};
char* p ;
int size; //文件大小
int nstar; //保留的*的个数
int i,nmb = 0; //nmb当前*的个数
printf("请输入一个字符串:");
gets(buf);
size = strlen(buf);
//写入文件
if(!(fp = fopen("a.txt","w")))
{
printf("文件打开失败\n");
return ;
}
fwrite(buf,1,size,fp);
fclose(fp);
fp = 0;
printf("请输入保留*号的个数:");
scanf("%d",&nstar);
//读文件
if (!(fp = fopen("a.txt","r")))
{
printf("文件打开失败\n");
return ;
}
fseek(fp,0,SEEK_END);
size = ftell(fp);
rewind(fp);
size = fread(buf,1,size,fp);
fclose(fp);
fp = 0;
//写入文件
if (!(fp = fopen("b.txt","w")))
{
printf("文件打开失败\n");
return ;
}
p = &buf[0];
i = 0;
while(i < size)
{
if(p[0] != '*')
fwrite(p,1,1,fp);
else
{
if(nmb < nstar)
{
fwrite(p,1,1,fp);
nmb++;
}
}
p++;
i++;
}
if (nmb <= nstar)
{
printf("*的个数:%d",nmb);
}
fclose(fp);
fp = 0;
}
您的问题已经有小伙伴解答了,请点击【采纳】按钮,采纳帮您提供解决思路的答案,给回答的人一些鼓励哦~~
ps:开通问答VIP,享受5次/月 有问必答服务,了解详情↓↓↓
【电脑端】戳>>> https://vip.csdn.net/askvip?utm_source=1146287632
【APP 】 戳>>> https://mall.csdn.net/item/52471?utm_source=1146287632