【14】other
目录
彩色字符
头文件
//color.h
#include <stdio.h>
#include <windows.h>
void color(short x)
{
if (x >= 0 && x <= 15)
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), x);
else
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
}
color(1);//改变全局颜色
cout << "test" << endl;
键盘事件响应
#include<iostream>
#include <conio.h>//关键头文件
using namespace std;
int main(){
int ch;
while (1) {
if (_kbhit()) {//如果有按键按下,则_kbhit()函数返回真
ch = _getch();//使用_getch()获取按下的键值
cout << ch;
if (ch == 27) { break; }//当按下ESC时退出循环,ESC键的键值是27.
}
}
system("pause");
return 0;
}
VS 特例
char* s = "Hello world";
在 VS2017 版本中使用这种 char*的表达方式会造成程序崩溃,所以 VS2017 对其进行了控件管理
解决方法
先将字符使用字符数组进行存储,再使用指针
char ss[100]= "Hello world";
char* s =ss;//正确
在前面加上 const
const char* s = "Hello world";//正确
文件重定向
C
freopen()函数。其原型是
freopen(
char* filename,//目标文件名
char* mode,//打开方式
FILE* stream//流正在关联的文件
//main()被执行时自动打开标准流文件stdin, stdout
)
值 意义 注释 “r” read 只读模式。为输入打开一个文本文件,该文件必须存在。 “w” write 只写模式。为输出新建/打开一个文本文件,若文件已经存在则覆盖其内容。 “a” append 追加模式。新建/打开一个文件,向末尾输出。 “r+” read/update 读写模式。为输入输出打开一个文件,该文件必须存在。 “w+” write/update 读写模式。为输入输出新建/打开一个文件,若文件已经存在则覆盖其内容。 “a+” append/update 读写模式。为输入输出新建/打开一个文件,向末尾输出。 “xb” binary 作为二进制打开。x 可为以上六个值,也可写为"rb+",“wb+”,“ab+”。
流 stream 一般是标准流文件 stdin,stdout,stderr 等。 调用此函数后,就可以像平常一样使用 cin, cout, scanf(), printf()了。
【例】 从文件 data.in 中输入两个正整数,输出其最大公约数到同目录下的 data.out 中
int main(){
freopen("data.in", "r", stdin);
freopen("data.out", "w", stdout);
int a, b;
scanf("%d %d", &a, &b);
//求最大公约数
while(b != 0){
a %= b;
int c = a;
a = b; b = c;
}
//输出
printf("%d", a? a : b);
return 0;
}
注: 希望在程序执行中回到键盘输入/控制台输出时,不能用
fclose(stdin);
fclose(stdout);
fclose(FILE* stream)会关闭输入/输出流。而应该再次重定向
freopen("CON","r",stdin);
freopen("CON","w",stdout);
在 Dos/Windows 中,控制台的名字是 con
freopen("con", "r", stdin);
相对路径&绝对路径 | 博客园
电脑硬盘 E 盘下,建文件夹“test”,"test"下建立子文件夹“file”,"file"下建子文件夹“data”,
电脑资源管理器显示目录 E:\test\file\data
当前 路径 E:\test\file
===================================================
1. 相对路径 ,用正斜杠’/‘
1.1 向上一级目录指向
./ 表示当前路径,相当于 E:\test\file
../ 表示当前路径的上一级路径,相当于 E:\test
../../ 表示当前路径上上一级路径,相当于 E:
更多指向上级路径的表示以此类推。
1.2 向下一级目录指向
./data 表示当前路径下一级路径,相当于 E:\test\file\data
./data/xxx 表示当前路径的下下一级路径,相当于 E:\test\file\data\xxx
更多向下指向的路径的表示以此类推。
2.绝对路径,用反斜杠''
E:\test
E:\test\file
E:\test\file\data
3.C\C++编程中的相对路径和绝对路径使用
C 语言中,反斜杠’\‘表示转义字符,所以绝对路径需要如下表示
FILE * fp;
fp = fopen("E:\test\file\data\d.txt","r");
也可以用相对路径表示,不受转义字符限制:
FILE * fp;
fp = fopen("E:/test/file/data/d.txt","r");
或者,当前路径 E:\test\file 下,相对路径表示为
FILE * fp;
fp = fopen("./data/d.txt","r");C\C++编程中:相对路径+绝对路径 | 博客园
电脑硬盘 E 盘下,建文件夹“test”,"test"下建立子文件夹“file”,"file"下建子文件夹“data”,
电脑资源管理器显示目录 E:\test\file\data
当前 路径 E:\test\file
============================================================
1. 相对路径 ,用正斜杠’/‘
1.1 向上一级目录指向
./ 表示当前路径,相当于 E:\test\file
../ 表示当前路径的上一级路径,相当于 E:\test
../../ 表示当前路径上上一级路径,相当于 E:
更多指向上级路径的表示以此类推。
1.2 向下一级目录指向
./data 表示当前路径下一级路径,相当于 E:\test\file\data
./data/xxx 表示当前路径的下下一级路径,相当于 E:\test\file\data\xxx
更多向下指向的路径的表示以此类推。
2.绝对路径,用反斜杠''
E:\test
E:\test\file
E:\test\file\data
3.C\C++编程中的相对路径和绝对路径使用
C 语言中,反斜杠’\‘表示转义字符,所以绝对路径需要如下表示
FILE * fp;
fp = fopen("E:\test\file\data\d.txt","r");
也可以用相对路径表示,不受转义字符限制:
FILE * fp;
fp = fopen("E:/test/file/data/d.txt","r");
或者,当前路径 E:\test\file 下,相对路径表示为
FILE * fp;
fp = fopen("./data/d.txt","r");
其他功能性语句&函数
system("pause")//砸瓦鲁多
system("cls")//清空屏幕
sizeof(变量类型或变量名);
//返回变量类型或变量的大小(单位字节)
//对数组名使用能得到数组占用大小
sizeof(数组名)/sizeof(元素名)
//可以得到元素个数
//同理可得多维数组行列数
rand()//取伪随机数//stdlib.h//中间可加参数
rand()%100//去0~99随机数
typeid(变量名).name()//得到变量类型