Bootstrap

Linux内核编程 文件的读写操作

练习如下:

运行程序允许控制台输入字符,控制台输入操作任意选择

例如输入hello,可以将输入的字符hello写入到一个文件当中

当输入over时,程序退出,将写入的文件整个读取打印显示在控制台中

代码如下

主要学习了解

文件中输入内容的不同输入方式 以及 学习命令手动编译方式运行程序

手动编译: g++:代表c++ 编译方式          gcc:代表c语言 编译方式

#include<iostream>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include<stdio.h>
#include <unistd.h>
#include <string.h>

using namespace std;

void homework()
{
	int res = 0;
	char buf[50] = { 0 };
	int writefd = open("/root/test.txt", O_CREAT | O_WRONLY, 0777);
	if (writefd < 0)
	{
		perror("open file error");
	}
	else
	{
		while (1)
		{
			//cin >> buf;
			//cin.get(buf, 50);//读取一行,保留enter回车换行符
			cin.getline(buf, 50);//不保留换行符读取一行
			//cout << "buf=" << buf << endl;
			if (strcmp(buf, "over") == 0)
			{
				close(writefd);
			}
			else
			{
				res = write(writefd, buf, strlen(buf));
				//cout << "res = " << res << endl;
				bzero(buf, sizeof(buf));//等同于 memset(buf,0,sizeof(buf))内存清空重置
			}
		}
	}
}

int main()
{
	homework();
	return 0;
}

1.首先测试cin

cin >> buf;

测试结果:输入的字符没有换行

2.测试cin.get,这里使用命令手动编译方式 运行程序

cin.get(buf, 50);//读取一行,保留enter回车换行符

写好程序点击全部保存后,不点击运行,而是重新生成解决方案

然后在ubuntu中命令操作,先打开projects打开相应工程,打开终端,输入命令

gcc main.cpp -o main

gcc main.cpp -o main

编译生成main可执行文件如图在obj和main.cpp中间,当然,如果再重新编译,需要可视化将那个main给DEL删掉,否则会编译不了,需要注意!

运行程序,输入命令

./main

./main

 运行程序后立马就生成test.txt,在终端中输入想要写入文件数据信息

如下图所示输入了

11111

22222

33333

over

ctrl+c 结束程序运行

如果想要再次编译运行程序,可以先clear清空命令,

同时将之前编译的main删掉(DEL),然后可以再次编译运行

注意:之前编译的main必须删掉,否则g++ main.cpp -o main会执行不了!!

如下图,才可以正常执行编译运行命令

cin.get结果如下, 只能写入第一行数据信息

从上图可以看出 cin.get(buf, 50);     只能写入第一行数据信息

3.最后测试cin.getline

cin.getline(buf, 50);//不保留换行符读取一行

发现和第一种输入的结果一样

;