用C语言将输入的数组存盘
时间: 2024-05-11 11:19:30 浏览: 18
你可以使用C语言中的文件操作函数来将输入的数组存盘。具体步骤如下:
1. 打开文件:使用fopen()函数打开要写入的文件,指定文件名和打开方式,如下:
```
FILE *fp = fopen("filename.txt", "w");
```
2. 写入数据:使用fprintf()函数将数组中的数据写入文件中,如下:
```
int arr[5] = {1, 2, 3, 4, 5};
for (int i = 0; i < 5; i++) {
fprintf(fp, "%d\n", arr[i]);
}
```
3. 关闭文件:使用fclose()函数关闭文件,如下:
```
fclose(fp);
```
完整代码如下:
```
#include <stdio.h>
int main() {
int arr[5] = {1, 2, 3, 4, 5};
FILE *fp = fopen("filename.txt", "w");
if (fp == NULL) {
printf("Error opening file");
return 1;
}
for (int i = 0; i < 5; i++) {
fprintf(fp, "%d\n", arr[i]);
}
fclose(fp);
return 0;
}
```
运行后,将会在当前目录下生成一个名为filename.txt的文本文件,其中存储了数组中的数据。
相关问题
帮我写一个c语言的程序
好的,以下是一个简单的仓库管理系统的C语言程序,仅供参考:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_TYPE 50 // 最大货物类型数量
#define MAX_NAME 20 // 货物名称最大长度
#define FILE_NAME "warehouse.txt" // 保存仓库信息的文件名
// 货物类型结构体
struct GoodsType {
int id; // 货物种类编号
char name[MAX_NAME]; // 货物名称
int stock; // 库存数量
};
struct GoodsType goodsTypes[MAX_TYPE]; // 货物类型数组
int typeCount = 0; // 货物类型数量
// 显示主菜单
void showMenu() {
printf("======= 仓库管理系统 =======\n");
printf("1. 显示货物类型列表\n");
printf("2. 新增货物类型\n");
printf("3. 删除货物类型\n");
printf("4. 货物入库\n");
printf("5. 货物出库\n");
printf("6. 库存显示\n");
printf("7. 仓库信息存盘\n");
printf("8. 仓库信息文件调入\n");
printf("9. 退出\n");
printf("===========================\n");
}
// 显示货物类型列表
void showTypes() {
if (typeCount == 0) {
printf("暂无货物类型信息\n");
} else {
printf("货物种类编号\t货物名称\n");
for (int i = 0; i < typeCount; i++) {
printf("%d\t\t%s\n", goodsTypes[i].id, goodsTypes[i].name);
}
}
}
// 新增货物类型
void addType() {
if (typeCount == MAX_TYPE) {
printf("货物种类数量已达到最大限制\n");
return;
}
struct GoodsType newType;
printf("请输入货物种类编号:");
scanf("%d", &newType.id);
printf("请输入货物名称:");
scanf("%s", newType.name);
newType.stock = 0;
goodsTypes[typeCount++] = newType;
printf("添加货物类型成功\n");
}
// 删除货物类型
void removeType() {
int typeId;
printf("请输入要删除的货物种类编号:");
scanf("%d", &typeId);
for (int i = 0; i < typeCount; i++) {
if (goodsTypes[i].id == typeId) {
for (int j = i; j < typeCount - 1; j++) {
goodsTypes[j] = goodsTypes[j + 1];
}
typeCount--;
printf("删除货物类型成功\n");
return;
}
}
printf("未找到对应货物类型\n");
}
// 货物入库
void stockIn() {
int typeId, amount;
printf("请输入货物种类编号:");
scanf("%d", &typeId);
printf("请输入入库数量:");
scanf("%d", &amount);
for (int i = 0; i < typeCount; i++) {
if (goodsTypes[i].id == typeId) {
goodsTypes[i].stock += amount;
printf("货物入库成功\n");
return;
}
}
printf("未找到对应货物类型\n");
}
// 货物出库
void stockOut() {
int typeId, amount;
printf("请输入货物种类编号:");
scanf("%d", &typeId);
printf("请输入出库数量:");
scanf("%d", &amount);
for (int i = 0; i < typeCount; i++) {
if (goodsTypes[i].id == typeId) {
if (goodsTypes[i].stock < amount) {
printf("库存不足\n");
return;
}
goodsTypes[i].stock -= amount;
printf("货物出库成功\n");
return;
}
}
printf("未找到对应货物类型\n");
}
// 库存显示
void showStock() {
if (typeCount == 0) {
printf("暂无货物类型信息\n");
} else {
printf("货物种类编号\t货物名称\t库存数量\n");
for (int i = 0; i < typeCount; i++) {
printf("%d\t\t%s\t\t%d\n", goodsTypes[i].id, goodsTypes[i].name, goodsTypes[i].stock);
}
}
}
// 保存仓库信息到文件
void saveToFile() {
FILE *fp = fopen(FILE_NAME, "w");
if (fp == NULL) {
printf("打开文件失败\n");
return;
}
for (int i = 0; i < typeCount; i++) {
fprintf(fp, "%d,%s,%d\n", goodsTypes[i].id, goodsTypes[i].name, goodsTypes[i].stock);
}
fclose(fp);
printf("仓库信息保存成功\n");
}
// 从文件中读取仓库信息
void loadFromFile() {
FILE *fp = fopen(FILE_NAME, "r");
if (fp == NULL) {
printf("打开文件失败\n");
return;
}
typeCount = 0;
while (!feof(fp) && typeCount < MAX_TYPE) {
struct GoodsType type;
fscanf(fp, "%d,%[^,],%d\n", &type.id, type.name, &type.stock);
goodsTypes[typeCount++] = type;
}
fclose(fp);
printf("仓库信息读取成功\n");
}
int main() {
int choice;
while (1) {
showMenu();
printf("请选择操作:");
scanf("%d", &choice);
switch (choice) {
case 1:
showTypes();
break;
case 2:
addType();
break;
case 3:
removeType();
break;
case 4:
stockIn();
break;
case 5:
stockOut();
break;
case 6:
showStock();
break;
case 7:
saveToFile();
break;
case 8:
loadFromFile();
break;
case 9:
printf("谢谢使用,再见!\n");
exit(0);
default:
printf("无效操作\n");
break;
}
}
return 0;
}
```
需要注意的是,此程序仅为一个简单的示例程序,可能存在一些问题和不足,具体实现方式可能因人而异,需要根据实际需求进行修改和完善。
串的查找和替换 问题描述:打开一篇英文文章,在该文章中找出所有给定的单词,然后对所有给定的单词替换为另外一个单词,再存盘。用c语言写代码
好的,以下是一个基本的C语言实现。需要注意的是,这个代码实现没有考虑单词边界和大小写问题,你可以根据需要进行修改和完善。
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define BUF_SIZE 1024
int main() {
char file_name[256]; // 存放文件名的数组
char buf[BUF_SIZE]; // 存放读取到的文件内容的数组
char word[256]; // 存放要查找和替换的单词的数组
char replace[256]; // 存放要替换成的单词的数组
char *p; // 用于存放查找到的单词的指针
int len1, len2; // 分别存放要查找和替换的单词的长度
int replace_count = 0; // 统计替换的次数
FILE *fp_in, *fp_out; // 文件指针
// 输入文件名、要查找和替换的单词、替换成的单词
printf("请输入文件名:");
scanf("%s", file_name);
printf("请输入要查找的单词:");
scanf("%s", word);
printf("请输入要替换成的单词:");
scanf("%s", replace);
// 计算要查找和替换的单词的长度
len1 = strlen(word);
len2 = strlen(replace);
// 打开文件
if ((fp_in = fopen(file_name, "r")) == NULL) {
printf("无法打开文件 %s\n", file_name);
exit(1);
}
// 创建输出文件
if ((fp_out = fopen("output.txt", "w")) == NULL) {
printf("无法创建输出文件\n");
exit(1);
}
// 读取文件内容并替换单词,写入到输出文件中
while (fgets(buf, BUF_SIZE, fp_in) != NULL) {
// 查找单词并替换
while ((p = strstr(buf, word)) != NULL) {
replace_count++;
strncpy(p, replace, len2);
memmove(p + len2, p + len1, strlen(p + len1) + 1);
}
// 写入到输出文件中
fputs(buf, fp_out);
}
// 关闭文件
fclose(fp_in);
fclose(fp_out);
// 输出替换的结果
printf("共替换了 %d 个单词\n", replace_count);
return 0;
}
```
这个代码实现的基本思路是:打开文件、读取文件内容、查找单词并替换、写入到输出文件中、关闭文件。其中,查找单词并替换的部分使用了字符串处理函数strstr()、strncpy()和memmove()。