Kana
文章6
标签3
分类4
关于c的小笔记(c notes)

关于c的小笔记(c notes)

最近在用c做个小项目,把碰到的问题做个小笔记,方便以后查询。

解决编译后的黑屏闪烁

在最后return 0之前加一行system("pause")

在库文件加入#include <stdlib.h>

c/c++中的相对路径和绝对路径

相对路径

用正斜杠‘/’

./ 表示当前路径,相当于E:\test\file

../ 表示当前路径的上一级路径,相当于E:\test

../../ 表示当前路径上上一级路径,相当于E:

绝对路径

用反斜杠‘\’

E:\test

E:\test\file

E:\test\file\data

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");

注意:在使用相对路径和绝对路径时要在头文件上加上direct.h

文件写入操作

fopen_s用法:须定义另外一个变量errno_t err,然后err = fopen_s(&fp,filename,"w")

fopen_s打开文件成功返回0,失败返回非0。

下面是我随机数程序写入文件的一段

if (_access("./data/", 0) != 0)                           //判断是否存在/data文件夹,没有的话就创建
{
    _mkdir("./data/");
}
FILE *fp;
errno_t err;                                             //新版本vs的格式,先定义err变量
err = fopen_s(&fp,"./data/samples.txt", "w+");           //fopen_s的值写入err 
if (err != 0)
{
    printf("打开文件失败\n");
}
for (int i = 0; i < num; i++)
{
    fprintf(fp, "%f\n", radm[i]);
}
printf("输出文件成功!\n");
fclose(fp);

c++排序

1.sort函数包含在头文件为#include的c++标准库中,调用标准库里的排序方法可以实现对数据的排序,但是sort函数是如何实现的,我们不用考虑!

2.sort函数的模板有三个参数:

void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);

(1)第一个参数first:是要排序的数组的起始地址。

(2)第二个参数last:是结束的地址(最后一个数据的后一个数据的地址)

(3)第三个参数comp是排序的方法:可以是从升序也可是降序。如果第三个参数不写,则默认的排序方法是从小到大排序。

示例

#include<iostream>
#include<algorithm>
using namespace std;
main()
{
  //sort函数第三个参数采用默认从小到大
  int a[]={45,12,34,77,90,11,2,4,5,55};
  sort(a,a+10);
  for(int i=0;i<10;i++)
  cout<<a[i]<<" "; 
}

开大数组溢出问题

在做随机数生成器过程中,有时候会需要比较大的数据量,而当数据量比较大的时候,定义数组会报错。这时候采用malloc方法申请,如下

int *arr=NULL;                                      //定义数组指针,数组的数据形式以int为例
arr=(int *)malloc(sizeof(int)*arr_size)             //用malloc定义arr,sizeof取int的字节数,后面的乘数乘以arr的大小,可以是变量
if(arr==NULL)                                       //每次使用malloc命令一定要判断是否成功
{
    printf("内存分配失败");
}

待续。。。