#include <stdio.h>
#include <stdlib.h>
void main()
{
FILE *fp;
char c;
char str[100]={'\0'};
char str1[100]={'\0'};
int i=0,j=0,k=0;
int p=0,q=0;
char a[100],b[100];
scanf("%s",str);
fp=fopen("D:\\test.txt","w");
fputs(str,fp);
fclose(fp);
fp=fopen("D:\\test.txt","r");
c=fgetc(fp);
str[i++]=c;
while(c!=EOF)
{
c=fgetc(fp);
str[i++]=c;
}
fclose(fp);
for(i=0;a[i]!='\0';i++)
{
if(a[i]!='*')
break;
}
p=i;
for(i=strlen(str1)-1;i>=0;i--)
{
if(a[i]!='*')
break;
}
q=i;
if(j<=p||j>=q)
{
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 c;
char str[100]={'\0'};
char str1[100]={'\0'};
int i=0,j=0,k=0;
int p=0,q=0;
char a[100],b[100];
gets(str);
fp=fopen("D:\\test.txt","w");
fputs(str,fp);
puts(str);
fclose(fp);
fp=fopen("D:\\test.txt","r");
c=fgetc(fp);
str[i++]=c;
while(c!=EOF)
{
c=fgetc(fp);
str[i++]=c;
}
fclose(fp);
for(i=0;str[i]!='\0';i++)
{
if(str[i]!='*'){
break;
}
}
p=i-1;
for(i=strlen(str)-2;i>=0;i--)
{
if(str[i]!='*')
break;
}
q=i+1;
k=0;
for(i=0;str[i]!='\0';i++){
if(i<=p||i>=q)
{
str1[k++]=str[i];
printf("%s\t",str1);
}
else if(str[i]!='*')
{
str1[k++]=str[i];
}
}
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 <stdlib.h>
void main()
{
FILE *fp;
char str[100] = { '\0' };
char str1[100] = { '\0' };
int i = 0, j = 0, k = 0;
int p = 0, q = 0;
scanf("%s", str);
fp = fopen("D:\\test.txt", "w");
fputs(str, fp);
fclose(fp);
fp = fopen("D:\\test.txt", "r");
fgets(str, 100, fp);
fclose(fp);
for (i = 0; str[i] != '\0'; i++)
{
if (str[i] != '*')
{
str1[j++] = str[i];
}
}
puts(str1);
fp = fopen("D:\\test.txt", "w+");
if (!fp)
{
printf("test.txt打开失败\n");
return;
}
fwrite(str1, 1, j, fp);
fclose(fp);
}
是所有的*号都删除吗?还是只删除字母之间的*号。全部删除的话,上面两位给出的代码是可用的,如果只删除字母之间的*号(比如,字符串*a**B*cd**,删除字母之间的*号,得新串*aBcd**),那么代码如下:
#include <stdio.h>
#include <string.h>
void main()
{
FILE* fp;
char buf[1024] = {0};
//char* p;
int size; //文件大小
int i;
int indexbegin = 0,indexlast = 0;
printf("请输入一个字符串:");
gets(buf);
size = strlen(buf);
//写入文件
if(!(fp = fopen("a.txt","w")))
{
printf("文件打开失败\n");
return ;
}
fwrite(buf,1,size,fp);
fclose(fp);
fp = 0;
//读文件
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;
//找到第一个和最后一个字母的位置
for (indexbegin = 0; indexbegin < size; indexbegin++)
{
if(buf[indexbegin] != '*')
break;
}
for (indexlast = size -1; indexlast >= 0 ;indexlast--)
{
if(buf[indexlast] != '*')
break;
}
//将0-indexbegin之间的写入文件
fwrite(buf,1,indexbegin,fp);
//将indexbegin-indexlast之间的写入文件
while(indexbegin <= indexlast)
{
if(buf[indexbegin] != '*')
fwrite(&buf[indexbegin],1,1,fp);
indexbegin++;
}
//将indexlast之后的写入文件
if(indexlast < size-1)
fwrite(&buf[indexlast+1],1,size - indexlast,fp);
fclose(fp);
fp = 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632