100个GDB小技巧总结

本文是100个GDB小技巧阅读总结,100个GDB小技巧.

本文章将持续记录gdb使用技巧,不定时更新,欢迎留言讨论.

列出函数的名字

在这个例子中源代码如下:

#include <unistd.h>

#include <stdio.h>

#include <pthread.h>

void *thread_func(void *p_arg)

{

while (1)

{

sleep(10);

}

}

int main(void)

{

pthread_t t1, t2;

pthread_create(&t1, NULL, thread_fu......

Vim实用技巧

本文专门记录Vim实用技巧,部分内容来源于Vim实用技巧一书.

VI简介

数字0 跳转至本行开头

Shift + 4 跳转至本行末尾

Shift + G 跳转至文件最后一行

dd 删除当前行

5dd 删除当前行和之后的4行

dG 删除当前行到文件末尾

d20G 删除从当前行至20行

复制命令

yy 复制当前行

5yy 复制当前行和之后4行

yG 复制当前行到文件末尾

y20G 复......

旋转字符串

题目描述

给定一个字符串,要求把字符串前面的若干个字符移动到字符串的尾部,如把字符串“abcdef”前面的2个字符'a'和'b'移动到字符串的尾部,使得原字符串变成字符串“cdefab”。请写一个函数完成此功能,要求对长度为n的字符串操作的时间复杂度为 O(n),空间复杂度为 O(1)。

暴力移位法

初看此题,可能最先想到的方法是按照题目所要求的,把需要移动的字符一个一个地移动到字符串的尾部,如此我们可以实现一个函数 LeftShiftOne(char* s, int n) ,以完成移动一个字符到字符串尾部的功能,代码如下所示:

#define M......

C经典面试题

本文将持续更新C经典面试题笔试题,短短的程序,却是大大的有意思。如果你针对文中内容有不同见解,欢迎留言评论.本文将会持续更新,记录有意思的题目。

以下程序的输出为:

#include <stdio.h>

int main()

{

float a=5.2;

if(a==5.2)

printf("equal");

else if(a < 5.2)

printf("less than");

else

printf("Great than");

return 0;

}

首先我们看知乎网友vczh的精彩回复:

......

strtol函数

本文将介绍strtol函数,参考linux programmer's manual,如有任何疑问请评论指出.

C 库函数 long int strtol(const char nptr, char endptr, int base) 把参数 str 所指向的字符串根据给定的 base 转换为一个长整数(类型为 long int 型),base 必须介于 2 和 36(包含)之间,或者是特殊值 0。

声明

下面是 strtol() 函数的声明。

long int strtol(const char *nptr, char **endptr, int base);

参数

np......

GCC编译链接多文件

gcc是Linux/Unix上非常强大的C语言编译器。并且如今也支持C++的编译。与VC不同,gcc是完全跨平台的。到目前为止很多工具都使用gcc作为其编译环境,比如cocos2d-x,android的NDK等等。 学习使用gcc编译器,就是学习它众多的编译参数。就是用连字符-连接的参数.

因为它的参数并不全是单字符的,所以不能使用一个连字符后加多个参数的写法, 要每个参数前面都要加一个连字符.

常用用法

直接在gcc后面加上要编译的C语言源文件

gcc hello.c

这种默认的情况下会生成一个名为a.out的可执行文件。

-o 最常用的编译选项,用于指定要生成的可执行文件的名......

Sublime Text 3 for Mac 使用心得

本文是使用和学习Sublime Text 3 for Mac过程中的体会与心得,欢迎补充。

安装Package Control

安装过程: 使用快捷键 control + ` 或者菜单栏选择View > Show Console

安装Package Control参考官方页面.

Sublime Text3在控制台输入

import urllib.request,os,hashlib; h = '7183a2d3e96f11eeadd761d777e62404' + 'e330c659d4bb41d3bdf022e94cab3cd0'; pf =......

C语言main函数argc argv介绍

在刚开始学习C语言时,你一定对main函数的形式有点迷惑,我第一次看到这种形式是在国外那本被誉为C语言圣经的《C语言程序设计》。

原形如下:

#include <stdio.h>

int main(int argc, char ** argv)

{

return 0;

}

如果你最开始是在VC6.0这种带有界面GUI的编译器中写代码的话,可能理解起来稍有难度,当然你在VC6.0编译之后会生成一个exe文件,在命令行执行的话可以看到argc和argv的作用.

这两个参数的作用: argc 是指命令行输入参数的个数(以空白符分隔) ,argv存储了所有的命令行参数 .

......

snprintf函数

snprintf

int snprintf ( char * s, size_t n, const char * format, ... );

Write formatted output to sized buffer

Composes a string with the same text that would be printed if format was used on printf, but instead of being printed, the content is stored as a C string in the buffer pointed by s (taking......

C语言内存布局

写这篇博客的初衷是我再整理图书的时候翻到一本介绍Linux的书上有介绍size命令.

size命令的输出不包括stack和heap的部分。只包括文本段(text), 代码段(data),未初始化数据段(bss)三部分。

示例:

vi hello.c

#include<stdio.h>

int main()

{

return 0;

}

wq保存之后,输入gcc -o a.out hello.c

[root@centos-linux ~]# size a.out

text data bss dec hex filename

1129......