13K+ 次浏览
让我们考虑以下C++示例代码来获取目录中的文件列表。算法开始 声明一个指向DIR类型的指针dr。 声明另一个指向dirent结构的指针en。 调用 opendir() 函数打开当前目录中的所有文件。 将dr指针初始化为dr = opendir(".")。 如果(dr) while ((en = readdir(dr)) != NULL) 使用en->d_name打印所有文件名。 调用closedir()函数关闭目录。结束。示例#include #include #include using namespace std; int main(void) { DIR ... 阅读更多
531 次浏览
空指针是指向任何东西的指针。空指针的一些用途包括:b) 当指针变量尚未分配任何有效内存地址时,初始化指针变量。b) 当我们不想传递任何有效内存地址时,将空指针传递给函数参数。c) 在访问任何指针变量之前检查空指针。这样,我们可以在与指针相关的代码中执行错误处理,例如,仅当指针不是NULL时才取消引用指针变量。在C++中,如果我们将0赋值给任何指针,则意味着该指针指向NULL。语法Float *p = 0 //初始化指针 ... 阅读更多
2K+ 次浏览
这是一个查找文件大小的C程序。算法开始 函数findfileSize() 以只读模式打开文件指针fp。 如果fp等于null,则 打印“文件未找到”并返回-1。 否则计算文件大小。 关闭文件。 将文件指针置于文件的开头 声明一个整型变量result并将其初始化为ftell()函数的输出。 关闭文件指针fp。 返回result。结束示例#include int findfileSize(char f_n[]) { FILE* fp = fopen(f_n, ... 阅读更多
376 次浏览
在本节中,我们将了解C和C++中exit()和_Exit()的区别。在C中,exit()终止调用进程,而不执行exit()函数之后存在的剩余代码。在C++11中,存在一个名为_Exit()的新函数。那么这个函数的功能是什么呢?exit()函数在终止程序之前执行一些清理工作。它清除连接终止、缓冲区刷新等。_Exit()函数不清理任何东西。如果我们使用atexit()方法进行测试,它将不起作用。让我们看两个例子,首先我们使用exit()函数,... 阅读更多
4K+ 次浏览
在执行C程序时,可以从命令行传递一些值到C程序。这些值称为命令行参数,它们在许多情况下对程序很重要,尤其是在您希望从外部控制程序而不是在代码内部硬编码这些值时。命令行参数使用main()函数参数处理,其中argc表示传递的参数数量,argv[]是指向传递给程序的每个参数的指针数组。以下是一个简单的示例,它检查是否提供了任何参数... 阅读更多
150 次浏览
实际上,在C程序中,一到两级静态指针很常见。三重间接引用很少见。但是无限级非常常见。借助结构体,可以实现无限指针间接引用。struct list { struct list *next; ... } lst; lst->next->next->next->...->next,以此类推,我们可以实现多级指针间接引用。还有另一种替代表示法如下所示:*(*(..(*(*(*lst).next).next).next...).next).next
在C++中,字符字面量的类型是char。在C中,字符字面量的类型是整数(int)。因此,在C中,sizeof('a')对于32位架构是4,而CHAR_BIT是8。但是,C和C++中sizeof(char)都是一个字节。示例代码 实时演示#include main() { printf("%d", sizeof('a')); }输出1示例代码 实时演示#include using namespace std; main() { cout
6K+ 次浏览
在本节中,我们将了解如何使用C或C++获取当前工作目录。我们为当前操作系统定义了一些标志。示例代码 实时演示#ifdef WINDOWS #include #define GetCurrentDir _getcwd #else #include #define GetCurrentDir getcwd #endif #include using namespace std; std::string get_current_dir() { char buff[FILENAME_MAX]; //创建字符串缓冲区以保存路径 GetCurrentDir( buff, FILENAME_MAX ); string current_working_dir(buff); return current_working_dir; } main() { cout
5K+ 次浏览
在本节中,我们将了解如何在C语言中将字符串标记化。C语言为此提供库函数。C语言库函数char *strtok(char *str, const char *delim)使用分隔符delim将字符串str分解成一系列标记。以下是strtok()函数的声明。char *strtok(char *str, const char *delim)它接受两个参数。str - 此字符串的内容将被修改并分解成较小的字符串(标记),delim - 这是包含分隔符的C字符串。这些在不同的调用中可能会有所不同。此函数返回指向找到的第一个标记的指针... 阅读更多
1K+ 次浏览
将现有的 C 或 C++ 功能封装到 Python 中有多种方法。在本节中,我们将了解如何使用 SWIG 来封装 C/C++ 功能。以下是将 C/C++ 功能封装到 Python 中的其他方法:手动封装、使用 Pyrex 封装 C 代码、ctypes、SIP、Boost.Python。SWIG (Simple Wrapper Interface Generator,简单封装接口生成器) 能够使用多种其他语言封装 C 代码,包括 Perl、Python、PHP、Ruby、Tcl、C#、Common Lisp (CLISP、Allegro、CL、UFFI、CFFI)、Java、Modula-3 和 OCAML。SWIG 还支持多种解释型和编译型 Scheme 实现(如 Guile、MzScheme、Chicken)。但我们将讨论它与……的实现。阅读更多