从键盘输入一个字符串,统计它在某文件(由用户从键盘输入文件名)中出现的次数,并在屏幕上输出包含该字符串的那些行。

#include<iostream>
#include<fstream>
#include<string>
using namespace std;
int main(){
	fstream dataFile;
	int x=0;
	char input[100];
	cout<<"请输入字符串1:";
	char str[100];
	cin>>str;
	dataFile.open("d:/a.txt",ios::in);
	if(!dataFile){
		cout<<"没有成功打开文件\n"; 
	} 
	while(!=dataFile.eof()){
		dataFile.getline(input,100);
		if(strstr(input,str)!=NULL){
			cout<<input<<endl;
			x++;
		}
	}
	cout<<str<<"出现了"<<x<<"次”;
	dataFile.close();
	return 0; 
} 

 

你可以使用以下代码实现从键盘输入学生信息并将其保存到文件: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_STUDENTS 100 struct Student { char name[20]; int age; char sex[10]; }; int main() { char filename[50]; struct Student students[MAX_STUDENTS]; int num_students = 0; // 获取文件名 printf("请输入文件名:"); fgets(filename, sizeof(filename), stdin); filename[strlen(filename) - 1] = '\0'; // 从键盘输入学生信息 while (num_students < MAX_STUDENTS) { printf("请输入学生姓名(输入exit退出):"); fgets(students[num_students].name, sizeof(students[num_students].name), stdin); students[num_students].name[strlen(students[num_students].name) - 1] = '\0'; if (strcmp(students[num_students].name, "exit") == 0) { break; } printf("请输入学生年龄:"); scanf("%d", &students[num_students].age); getchar(); printf("请输入学生性别:"); fgets(students[num_students].sex, sizeof(students[num_students].sex), stdin); students[num_students].sex[strlen(students[num_students].sex) - 1] = '\0'; num_students++; } // 将学生信息保存到文件 FILE *fp = fopen(filename, "w"); if (fp == NULL) { printf("无法打开文件 %s\n", filename); exit(1); } for (int i = 0; i < num_students; i++) { fprintf(fp, "%s,%d,%s\n", students[i].name, students[i].age, students[i].sex); } fclose(fp); printf("学生信息已保存到文件 %s \n", filename); return 0; } ``` 这段代码首先获取用户输入的文件名,然后使用一个 while 循环从键盘输入学生信息,每输入一个学生信息就将其保存到一个结构体数组,最后将所有学生信息保存到文件。保存到文件的格式为每一个学生信息,学生信息的各个字段用逗号分隔。注意要用 fgets 函数读取字符串,以避免输入缓冲区的换符干扰下一次输入。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值