面试题答案
一键面试#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 打开文件
FILE* openFile(const char* filename, const char* mode) {
FILE* file = fopen(filename, mode);
if (file == NULL) {
perror("Failed to open file");
return NULL;
}
return file;
}
// 读取文件内容
char* readFile(FILE* file, size_t* size) {
if (file == NULL) {
perror("File is not opened");
return NULL;
}
fseek(file, 0, SEEK_END);
*size = ftell(file);
fseek(file, 0, SEEK_SET);
char* buffer = (char*)malloc(*size + 1);
if (buffer == NULL) {
perror("Failed to allocate memory");
return NULL;
}
size_t readBytes = fread(buffer, 1, *size, file);
if (readBytes != *size) {
perror("Failed to read file");
free(buffer);
return NULL;
}
buffer[*size] = '\0';
return buffer;
}
// 写入文件内容
int writeFile(FILE* file, const char* content) {
if (file == NULL) {
perror("File is not opened");
return -1;
}
size_t writeBytes = fwrite(content, 1, strlen(content), file);
if (writeBytes != strlen(content)) {
perror("Failed to write to file");
return -1;
}
return 0;
}
// 关闭文件
void closeFile(FILE* file) {
if (file != NULL) {
if (fclose(file) != 0) {
perror("Failed to close file");
}
}
}
你可以这样调用这些函数:
int main() {
const char* filename = "test.txt";
FILE* file = openFile(filename, "w+");
if (file != NULL) {
const char* writeContent = "Hello, World!";
if (writeFile(file, writeContent) == 0) {
printf("Write to file successfully.\n");
rewind(file); // 将文件指针移动到文件开头以便读取
size_t size;
char* readContent = readFile(file, &size);
if (readContent != NULL) {
printf("Read from file: %s\n", readContent);
free(readContent);
}
}
closeFile(file);
}
return 0;
}