33,311
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include<stdlib.h>
#pragma warning(disable:4996)
struct emploee {
int count;
char name[20];
char sex;
int age;
int income;
};
void input();
void output();
void add(struct emploee emp);
void delet(int num);
void search(int num);
int main()
{
struct emploee emp;
int num;
input();
output();
printf("******************************************\n");
printf("请输入操作对应的数字:\n");
printf("1--查找员工信息\n");
printf("2--删除员工信息\n");
printf("3--插入员工信息\n");
printf("4--退出\n");
printf("******************************************\n");
char c;
while ((c = getchar()) != '4') {
switch (c) {
case'1':
printf("请输入要查找的员工编号:");
scanf("%d", &num);
search(num);
break;
case'2':
printf("请输入要删除的员工编号:");
scanf("%d", &num);
delet(num);
break;
case'3':
printf("请输入要插入的员工信息:");
scanf("%d%s", &emp.count, emp.name);
getchar();
scanf("%c%d%d", &emp.sex, &emp.age, &emp.income);
add(emp);
break;
}
}
}
void input() {
FILE* a;
struct emploee emp;
if ((a = fopen("emploee.txt", "w")) == NULL) {
printf("con't open");
exit(0);
}
else {
int i = 0;
printf("请输入员工信息:编号,姓名,性别,年龄,工资(编号输入0时结束)\n");
scanf("%d", &emp.count);
while (emp.count != 0) {
i++;
scanf("%s", emp.name);
getchar();
scanf("%c%d%d", &emp.sex, &emp.age, &emp.income);
fwrite(&emp, sizeof(struct emploee), 1, a);
scanf("%d", &emp.count);
}
fclose(a);
}
}
void output() {
FILE* a;
struct emploee emp;
if ((a = fopen("emploee.txt", "r")) == NULL) {
printf("con't open");
exit(0);
}
else {
printf("现有员工信息为:\n");
while (fread(&emp, sizeof(struct emploee), 1, a)) {
printf("%d %s %c %d %d\n", emp.count, emp.name, emp.sex, emp.age, emp.income);
}
fclose(a);
}
}
void add(struct emploee emp) {
FILE* a;
if ((a = fopen("emploee.txt", "a")) == NULL) {
printf("con't open");
exit(0);
}
else {
fwrite(&emp, sizeof(struct emploee), 1, a);
fclose(a);
output();
}
}
void delet(int num) {
FILE* a, *a2;
struct emploee emp;
if ((a = fopen("emploee.txt", "r+")) == NULL) {
printf("con't open");
exit(0);
}
if ((a2 = fopen("emploee_f.txt", "w")) == NULL) {
printf("con't open");
exit(0);
}
while (fread(&emp, sizeof(struct emploee), 1, a)) {
if (emp.count != num) {
fwrite(&emp, sizeof(struct emploee), 1, a2);
}
}
fclose(a); fclose(a2);
if ((a2 = fopen("emploee_f.txt", "r+")) == NULL) {
printf("con't open");
exit(0);
}
if ((a = fopen("emploee.txt", "w")) == NULL) {
printf("con't open");
exit(0);
}
while (fread(&emp, sizeof(struct emploee), 1, a2)) {
fwrite(&emp, sizeof(struct emploee), 1, a);
}
fclose(a); fclose(a2);
printf("已删除");
output();
}
void search(int num) {
FILE* a;
struct emploee emp;
if ((a = fopen("emploee.txt", "r")) == NULL) {
printf("con't open");
exit(0);
}
else {
int flag = 0;
while (!feof(a)) {
fread(&emp, sizeof(struct emploee), 1, a);
if (emp.count == num) {
flag = 1;
printf("此员工信息为:");
printf("%d %s %c %d %d\n", emp.count, emp.name, emp.sex, emp.age, emp.income);
break;
}
}
if (flag == 0) {
printf("not find");
}
fclose(a);
}
#include <stdio.h>
#include<stdlib.h>
#pragma warning(disable:4996)
struct emploee {
int count;
char name[20];
char sex;
int age;
int income;
};
void input();
void output();
void add(struct emploee emp);
void delet(int num);
void search(int num);
int main()
{
struct emploee emp;
int num;
input();
output();
printf("******************************************\n");
printf("请输入操作对应的数字:\n");
printf("1--查找员工信息\n");
printf("2--删除员工信息\n");
printf("3--插入员工信息\n");
printf("4--退出\n");
printf("******************************************\n");
char c;
while ((c = getchar()) != '4') {
switch (c) {
case'1':
printf("请输入要查找的员工编号:");
scanf("%d", &num);
search(num);
break;
case'2':
printf("请输入要删除的员工编号:");
scanf("%d", &num);
delet(num);
break;
case'3':
printf("请输入要插入的员工信息:");
scanf("%d%s", &emp.count, emp.name);
getchar();
scanf("%c%d%d", &emp.sex, &emp.age, &emp.income);
add(emp);
break;
}
}
}
void input() {
FILE* a;
struct emploee emp;
if ((a = fopen("emploee.txt", "w")) == NULL) {
printf("con't open");
exit(0);
}
else {
int i = 0;
printf("请输入员工信息:编号,姓名,性别,年龄,工资(编号输入0时结束)\n");
scanf("%d", &emp.count);
while (emp.count != 0) {
i++;
scanf("%s", emp.name);
getchar();
scanf("%c%d%d", &emp.sex, &emp.age, &emp.income);
fwrite(&emp, sizeof(struct emploee), 1, a);
scanf("%d", &emp.count);
}
fclose(a);
}
}
void output() {
FILE* a;
struct emploee emp;
if ((a = fopen("emploee.txt", "r")) == NULL) {
printf("con't open");
exit(0);
}
else {
printf("现有员工信息为:\n");
while (fread(&emp, sizeof(struct emploee), 1, a)) {
printf("%d %s %c %d %d\n", emp.count, emp.name, emp.sex, emp.age, emp.income);
}
fclose(a);
}
}
void add(struct emploee emp) {
FILE* a;
if ((a = fopen("emploee.txt", "a")) == NULL) {
printf("con't open");
exit(0);
}
else {
fwrite(&emp, sizeof(struct emploee), 1, a);
fclose(a);
output();
}
}
void delet(int num) {
FILE* a, *a2;
struct emploee emp;
if ((a = fopen("emploee.txt", "r+")) == NULL) {
printf("con't open");
exit(0);
}
if ((a2 = fopen("emploee_f.txt", "w")) == NULL) {
printf("con't open");
exit(0);
}
while (fread(&emp, sizeof(struct emploee), 1, a)) {
if (emp.count != num) {
fwrite(&emp, sizeof(struct emploee), 1, a2);
}
}
fclose(a); fclose(a2);
if ((a2 = fopen("emploee_f.txt", "r+")) == NULL) {
printf("con't open");
exit(0);
}
if ((a = fopen("emploee.txt", "w")) == NULL) {
printf("con't open");
exit(0);
}
while (fread(&emp, sizeof(struct emploee), 1, a2)) {
fwrite(&emp, sizeof(struct emploee), 1, a);
}
fclose(a); fclose(a2);
printf("已删除");
output();
}
void search(int num) {
FILE* a;
struct emploee emp;
if ((a = fopen("emploee.txt", "r")) == NULL) {
printf("con't open");
exit(0);
}
else {
int flag = 0;
while (!feof(a)) {
fread(&emp, sizeof(struct emploee), 1, a);
if (emp.count == num) {
flag = 1;
printf("此员工信息为:");
printf("%d %s %c %d %d\n", emp.count, emp.name, emp.sex, emp.age, emp.income);
break;
}
}
if (flag == 0) {
printf("not find");
}
fclose(a);
}
[/quote]
#include <stdio.h>
#include<stdlib.h>
#pragma warning(disable:4996)
struct emploee
{
char count[5];
char name[20];
char sex;
char age[3];
char income[5];
};
void input();
void output();
void add(struct emploee emp);
void delet(int num);
void search(int num);
int main()
{
// struct emploee emp;
// int num;
input();
// output();
printf("******************************************\n");
printf("请输入操作对应的数字:\n");
printf("1--查找员工信息\n");
printf("2--删除员工信息\n");
printf("3--插入员工信息\n");
printf("4--退出\n");
printf("******************************************\n");
/*char c;
while ((c = getchar()) != '4')
{
switch (c)
{
case'1':
printf("请输入要查找的员工编号:");
scanf("%d", &num);
search(num);
break;
case'2':
printf("请输入要删除的员工编号:");
scanf("%d", &num);
delet(num);
break;
case'3':
printf("请输入要插入的员工信息:");
scanf("%d%s", &emp.count, emp.name);
getchar();
scanf("%c%d%d", &emp.sex, &emp.age, &emp.income);
add(emp);
break;
}
}*/
}
void input()
{
FILE* a;
struct emploee emp;
if ((a = fopen("emploee.txt", "w")) == NULL)
{
printf("con't open");
exit(0);
}
else
{
int i = 0;
printf("请输入员工信息:编号,姓名,性别,年龄,工资(编号输入0时结束)\n");
while (true)
{
int count;
int age;
int income;
i++;
memset(&emp, 0, sizeof(emp));
scanf("%d", &count);
scanf("%s", emp.name);
getchar();
scanf("%c%d%d", &emp.sex, &age, &income);
itoa(count, emp.count, 10);
itoa(age, emp.age, 10);
itoa(income, emp.income, 10);
// fwrite(countt, 5, 1, a);
fwrite(&emp, sizeof(emp), 1, a);
scanf("%d", &count);
if (count == 0)
break;
}
fclose(a);
}
}
//void output()
//{
// FILE* a;
// struct emploee emp;
// if ((a = fopen("emploee.txt", "r")) == NULL)
// {
// printf("con't open");
// exit(0);
// }
// else
// {
// printf("现有员工信息为:\n");
// while (fread(&emp, sizeof(struct emploee), 1, a))
// {
// printf("%s %s %c %s %s\n", emp.count, emp.name, emp.sex, emp.age, emp.income);
// }
// fclose(a);
// }
//}
//void add(struct emploee emp)
//{
// FILE* a;
// if ((a = fopen("emploee.txt", "a")) == NULL)
// {
// printf("con't open");
// exit(0);
// }
// else
// {
// fwrite(&emp, sizeof(struct emploee), 1, a);
// fclose(a);
// output();
// }
//}
//void delet(int num)
//{
// FILE* a, *a2;
// struct emploee emp;
// if ((a = fopen("emploee.txt", "r+")) == NULL)
// {
// printf("con't open");
// exit(0);
// }
// if ((a2 = fopen("emploee_f.txt", "w")) == NULL)
// {
// printf("con't open");
// exit(0);
// }
// while (fread(&emp, sizeof(struct emploee), 1, a))
// {
// if (emp.count != num)
// {
// fwrite(&emp, sizeof(struct emploee), 1, a2);
// }
// }
// fclose(a); fclose(a2);
// if ((a2 = fopen("emploee_f.txt", "r+")) == NULL)
// {
// printf("con't open");
// exit(0);
// }
// if ((a = fopen("emploee.txt", "w")) == NULL)
// {
// printf("con't open");
// exit(0);
// }
// while (fread(&emp, sizeof(struct emploee), 1, a2))
// {
// fwrite(&emp, sizeof(struct emploee), 1, a);
// }
// fclose(a); fclose(a2);
// printf("已删除");
// output();
//}
//void search(int num)
//{
// FILE* a;
// struct emploee emp;
// if ((a = fopen("emploee.txt", "r")) == NULL)
// {
// printf("con't open");
// exit(0);
// }
// else
// {
// int flag = 0;
// while (!feof(a))
// {
// fread(&emp, sizeof(struct emploee), 1, a);
// if (emp.count == num)
// {
// flag = 1;
// printf("此员工信息为:");
// printf("%d %s %c %d %d\n", emp.count, emp.name, emp.sex, emp.age, emp.income);
// break;
// }
// }
// if (flag == 0)
// {
// printf("not find");
// }
// fclose(a);
// }
//}
改了你的结构体,帮你实现了输入(文件保存的内容也是正确的),如有你觉得有参考价值可以继续下面的操作。你的这种写操作我以前看过一段通信传输代码也是这么搞的,我当时就表示怀疑这种操作是否正确。但是我以前在写入其他的文档是正确的啊 文件编码方式问题,请参考https://zhidao.baidu.com/question/267841672.html
这应该没错吧,但是他存进去的格式应该不是txt,如果你尝试用fread读到标准窗口输出,应该是能准确输出的,你试试哈
文件编码方式问题,请参考https://zhidao.baidu.com/question/267841672.html