写个读文件程序,C语言完成
时间: 2023-06-14 20:07:17 浏览: 43
以下是一个简单的C语言程序,可以读取文本文件中的内容并输出到屏幕上:
```c
#include <stdio.h>
int main() {
FILE *fp;
char filename[] = "test.txt";
char c;
fp = fopen(filename, "r");
if (fp == NULL) {
printf("无法打开文件 %s\n", filename);
return 1;
}
printf("文件内容:\n");
while ((c = fgetc(fp)) != EOF) {
printf("%c", c);
}
fclose(fp);
return 0;
}
```
在这个程序中,我们首先用`fopen`函数打开了一个名为`test.txt`的文件,并以只读方式打开。如果文件无法打开,将会输出错误信息并退出程序。
接下来,我们使用`while`循环和`fgetc`函数从文件中逐一读取每个字符,直到读取到文件结尾的标记`EOF`。在循环中,我们将每个字符输出到屏幕上。
最后,我们使用`fclose`函数关闭文件指针,释放系统资源。
相关问题
c语言文件读写操作代码
文件读写操作在C语言中使用标准库函数进行操作,下面是一个简单的示例代码:
```c
#include <stdio.h>
int main() {
char str[100];
// 写文件
FILE *fp = fopen("test.txt", "w");
fputs("Hello World!", fp);
fclose(fp);
// 读文件
fp = fopen("test.txt", "r");
fgets(str, 100, fp);
printf("%s", str);
fclose(fp);
return 0;
}
```
这个程序将字符串"Hello World!"写入名为test.txt的文件中,然后再从文件中读取出来并在控制台打印出来。需要注意的是,写文件时使用的是"w"模式,表示以写入模式打开文件;读文件时使用的是"r"模式,表示以读取模式打开文件。同时需要注意文件操作完成后需要使用fclose函数关闭文件。
用C语言写一个文件io实现通过共享内存读写的程序
由于共享内存涉及到进程间通信,所以需要使用进程相关的函数,比如fork、shmget、shmat等。下面是一个简单的利用共享内存进行文件IO的程序。
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <fcntl.h>
#define SHMSZ 1024
int main(){
int shmid, fd;
int *shm, *s;
char c;
/* 创建共享内存 */
if((shmid = shmget(IPC_PRIVATE, SHMSZ, IPC_CREAT | 0666)) < 0){
perror("shmget");
exit(1);
}
/* 将共享内存段连接到进程地址空间 */
if((shm = shmat(shmid, NULL, 0)) == (int *)-1){
perror("shmat");
exit(1);
}
/* 创建文件 */
if ((fd = open("file.txt", O_CREAT|O_WRONLY|O_TRUNC, 0666)) == -1) {
perror("open");
exit(1);
}
/* 创建子进程 */
pid_t pid;
pid = fork();
if(pid < 0){
perror("fork");
exit(1);
} else if(pid == 0){ // 子进程,写操作
s = shm;
/* 从标准输入读取字符 */
while ((c = getchar()) != EOF) {
/* 将字符存入共享内存 */
*s++ = c;
/* 遇到换行符表示完成一行,写入文件 */
if (c == '\n') {
*(shm + SHMSZ - 1) = '\0';
write(fd, shm, SHMSZ);
s = shm;
}
}
/* 结束标志 */
*s = '*';
/* 分离共享内存段 */
if(shmdt(shm) == -1){
perror("shmdt");
exit(1);
}
/* 关闭文件 */
close(fd);
exit(0);
} else { // 父进程,读操作
/* 等待子进程结束 */
waitpid(pid, NULL, 0);
s = shm;
/* 从共享内存读取字符 */
while (*s != '*') {
putchar(*s++);
}
putchar('\n');
/* 分离共享内存段 */
if(shmdt(shm) == -1){
perror("shmdt");
exit(1);
}
/* 关闭文件 */
close(fd);
/* 删除共享内存段 */
if(shmctl(shmid, IPC_RMID, 0) == -1){
perror("shmctl");
exit(1);
}
exit(0);
}
return 0;
}
```
这个程序实现了一个简单的共享内存读写文件的操作,通过fork创建子进程,子进程利用共享内存读取标准输入,并将每行的字符串写入文件中。父进程等待子进程结束后,从共享内存中读取字符串并输出到标准输出中。程序中涉及到的函数分别是shmget、shmat、shmdt、shmctl等,用于共享内存的连接、分离、删除等操作。该程序仅供参考,实际使用中需要根据需求进行修改和完善。