用C++写一个文件读写函数
时间: 2023-12-27 12:50:29 浏览: 26
以下是一个基本的文件读写函数,可以在C语言中使用:
```c
#include <stdio.h>
int main() {
FILE *fptr;
char filename[100], c;
// 读取文件名
printf("请输入文件名:\n");
scanf("%s", filename);
// 打开文件
fptr = fopen(filename, "r");
if (fptr == NULL) {
printf("无法打开文件\n");
return 0;
}
// 读取文件内容并输出到屏幕上
c = fgetc(fptr);
while (c != EOF) {
printf("%c", c);
c = fgetc(fptr);
}
// 关闭文件
fclose(fptr);
return 0;
}
```
这个函数可以读取文件中的内容并输出到屏幕上。如果需要写入文件,可以修改`fopen`函数的第二个参数为`w`,表示以写入模式打开文件。然后使用`fprintf`函数向文件中写入内容即可。
相关问题
c++用festrem编写一个文件读写函数
以下是使用fstream在C++中编写文件读写函数的示例代码:
```c++
#include <iostream>
#include <fstream>
using namespace std;
void writeToFile(string fileName, string content) {
ofstream file;
file.open(fileName);
if (file.is_open()) {
file << content;
file.close();
} else {
cout << "Unable to open file";
}
}
string readFromFile(string fileName) {
ifstream file;
file.open(fileName);
if (file.is_open()) {
string content((istreambuf_iterator<char>(file)), (istreambuf_iterator<char>()));
file.close();
return content;
} else {
cout << "Unable to open file";
return "";
}
}
int main() {
string fileName = "example.txt";
string content = "Hello, world!";
// Write content to file
writeToFile(fileName, content);
// Read content from file
string fileContent = readFromFile(fileName);
cout << "File content: " << fileContent << endl;
return 0;
}
```
`writeToFile()`函数将给定的内容写入指定的文件中,`readFromFile()`函数从指定的文件中读取内容。在主函数中,我们将字符串“Hello, world!”写入名为“example.txt”的文件中,然后读取该文件的内容并将其输出到控制台上。
用c++写一个读写xml文件的代码
### 回答1:
可以使用libxml2库来读写xml文件,以下是一个简单的示例代码:
#include <stdio.h>
#include <libxml/parser.h>
#include <libxml/tree.h>
int main() {
xmlDocPtr doc;
xmlNodePtr root, node;
xmlChar *content;
// 创建一个空的xml文档
doc = xmlNewDoc(BAD_CAST "1.");
root = xmlNewNode(NULL, BAD_CAST "root");
xmlDocSetRootElement(doc, root);
// 添加一个子节点
node = xmlNewChild(root, NULL, BAD_CAST "node", BAD_CAST "Hello World!");
// 保存xml文档到文件
xmlSaveFormatFileEnc("test.xml", doc, "UTF-8", 1);
// 读取xml文件
doc = xmlReadFile("test.xml", NULL, );
root = xmlDocGetRootElement(doc);
// 遍历子节点并输出内容
for (node = root->children; node != NULL; node = node->next) {
content = xmlNodeGetContent(node);
printf("%s\n", content);
xmlFree(content);
}
// 释放资源
xmlFreeDoc(doc);
xmlCleanupParser();
return ;
}
### 回答2:
C语言中没有内置的库函数可以直接读写XML文件,但可以通过第三方库来实现。以下是使用libxml2库来读写XML文件的简单代码示例:
```c
#include <stdio.h>
#include <libxml/parser.h>
#include <libxml/tree.h>
void writeXML(const char* filename) {
xmlDocPtr doc = NULL;
xmlNodePtr root = NULL;
xmlNodePtr node = NULL;
// 创建一个XML文档以及根节点
doc = xmlNewDoc(BAD_CAST "1.0");
root = xmlNewNode(NULL, BAD_CAST "root");
xmlDocSetRootElement(doc, root);
// 创建一个子节点并设置文本内容
node = xmlNewTextChild(root, NULL, BAD_CAST "name", BAD_CAST "John");
// 将XML文档写入文件
xmlSaveFormatFileEnc(filename, doc, "UTF-8", 1);
// 释放资源
xmlFreeDoc(doc);
xmlCleanupParser();
}
void readXML(const char* filename) {
xmlDocPtr doc = NULL;
xmlNodePtr root = NULL;
xmlNodePtr node = NULL;
// 解析XML文件
doc = xmlParseFile(filename);
if (doc == NULL) {
fprintf(stderr, "Failed to parse XML file\n");
return;
}
// 获取根节点
root = xmlDocGetRootElement(doc);
// 遍历子节点并打印文本内容
for (node = root->children; node; node = node->next) {
if (node->type == XML_ELEMENT_NODE) {
printf("%s: %s\n", node->name, xmlNodeGetContent(node));
}
}
// 释放资源
xmlFreeDoc(doc);
xmlCleanupParser();
}
int main() {
const char* filename = "sample.xml";
writeXML(filename);
readXML(filename);
return 0;
}
```
这段代码定义了两个函数:writeXML和readXML,分别用于写入和读取XML文件。在函数main中,先调用writeXML函数创建一个sample.xml文件,然后再调用readXML函数读取该文件并打印出节点名称和文本内容。
注意:在使用此代码之前,确保已经安装了libxml2库,并在编译时链接该库。
### 回答3:
下面是一个简单的例子,展示了如何使用C语言读取和写入XML文件。
读取XML文件的代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <libxml/xmlmemory.h>
#include <libxml/parser.h>
void parseXML(const char *filename) {
xmlDocPtr doc;
xmlNodePtr cur;
doc = xmlParseFile(filename);
if (doc == NULL) {
fprintf(stderr, "无法打开文件\n");
return;
}
cur = xmlDocGetRootElement(doc);
if (cur == NULL) {
fprintf(stderr, "空文件\n");
xmlFreeDoc(doc);
return;
}
if (xmlStrcmp(cur->name, (const xmlChar *)"root")) {
fprintf(stderr, "不正确的文件格式\n");
xmlFreeDoc(doc);
return;
}
cur = cur->xmlChildrenNode;
while (cur != NULL) {
if ((!xmlStrcmp(cur->name, (const xmlChar *)"node"))) {
xmlChar *key;
key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1);
printf("节点内容: %s\n", key);
xmlFree(key);
}
cur = cur->next;
}
xmlFreeDoc(doc);
return;
}
int main() {
const char *filename = "example.xml";
parseXML(filename);
return 0;
}
```
写入XML文件的代码如下:
```c
#include <stdio.h>
#include <libxml/parser.h>
#include <libxml/tree.h>
int main() {
xmlDocPtr doc = xmlNewDoc(BAD_CAST "1.0");
xmlNodePtr root = xmlNewNode(NULL, BAD_CAST "root");
xmlNodePtr node = xmlNewNode(NULL, BAD_CAST "node");
xmlDocSetRootElement(doc, root);
xmlAddChild(root, node);
xmlNodePtr content = xmlNewText(BAD_CAST "这是一个节点的内容");
xmlAddChild(node, content);
xmlSaveFormatFileEnc("example.xml", doc, "UTF-8", 1);
xmlFreeDoc(doc);
xmlCleanupParser();
return 0;
}
```
上面的代码使用了libxml库来读取和写入XML文件。读取XML文件的代码首先打开并解析了XML文件,然后遍历每个节点并打印出节点的内容。
写入XML文件的代码创建了一个XML文档对象,并创建了根节点和一个子节点,然后将内容添加到子节点中,并将根节点设置为XML文档的根节点,最后将该文档保存到文件中。
这只是简单的XML读写操作的示例,实际项目中可能需要更复杂的操作和对XML结构的更深入理解。