C语言编程(求简单点的方法)

在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