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);//不保留换行符读取一行

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chenruhan_QAQ_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值