练习如下:
运行程序允许控制台输入字符,控制台输入操作任意选择
例如输入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);//不保留换行符读取一行
发现和第一种输入的结果一样