C 常用函数实例

1、strcmp:字符串比较

if (strcmp(pOpt,"HASH") == 0)

0:相同

大于0:字符串1大于字符串2

小于0:字符串1小于字符串2

2、memset:清空结构体

memset(&stTest,sizeof(struct sample_struct));

如果是数组:

struct sample_struct TEST[10];
则
memset(TEST,sizeof(struct sample_struct)*10);

3、sscanf:格式取值

sscanf( “abcdef ghijk”,“%s“,s);//遇到空格赋值截止

puts( s );//abcdef

sscanf( “abcdefghijk “,“%4s“,s);//取指定长度的字符串

puts(s);//abcd

sscanf( “abcdefghijk “+4,“%s”,s);//略去指定长度,取后面的字符串

puts(s);//efghijk

sscanf( “abcdefghijk”,“%[^i]“,s);//取指定字符截止的字符串

puts(s);//abcdefgh

sscanf( “abcdefghijkLMNOPQ”,“%[^A-Z]“,s);//取指定字符集截止的字符串

puts(s);//abcdefghijk

sscanf( “abcdefg#hijkLMN@OPQ”,“%*[^#]#%[^@]“,s);//取指定字符之间的字符串

puts(s);//hijkLMN

sscanf( “hello world!”,“%*s%s“,s);

puts(s);//world!

注意:

“%[^f]”,^ 的意思是非

%*d和%*s,* 是表示跳过此数据不读入. (也就是不把此数据读入参数中)

4、strcpy:字符串拷贝(char数组)

strcpy(xmlInfo.szProtocol,m_protoName.GetBuffer());

5、strncasecmp:用来比较参数s1和s2字符串前n个字符,比较时会自动忽略大小写的差异。

相关函数:bcmp,memcmp,strcmp,strcoll,strncmp
表头文件:#include <strings.h>
函数定义:int strncasecmp(const char *s1,const char *s2,size_t n)
函数说明:strncasecmp()用来比较参数s1和s2字符串前n个字符,比较时会自动忽略大小写的差异。

6、strncmp:这个函数用来比较s1和s2字符串的前maxlen个字符

int strncmp ( const char * str1,const char * str2,size_t num );
     这个函数用来比较s1和s2字符串的前maxlen个字符。如果两个字符串相等的话,strncmp将返回0。如果s1是s2的一个子串的话,s1小于s2。此外还有,函数 int strncmp (const char *s1,size_t size) 此函数与strcmp极为类似。不同之处是,strncmp函数是指定比较size个字符。也就是说,如果字符串s1与s2的前size个字符相同,函数返回值为0。

7、chdir:是C语言中的一个系统调用函数(同cd),用于改变当前工作目录,其参数为Path 目标目录,可以是绝对目录或相对目录。

#include <unistd.h>

int chdir(const char *path);

8、umask(0);

chdir("/");
umask(0);    

9、strcat 字符串相加

char p3[20] = "111";
char* p4 = "222";
strcat(p3,p4);
printf("%s\n",p3);

10、clrscr:进入文件夹后修改文件默认权限,与chmod相反

清除文本模式窗口 清屏的意思 就是把之前显示出的文字字符去掉 跟cmd里面的清屏的功能是一样的。

11、memcpy(void *dest,void *src,unsigned int count):将s中第13个字符开始的4个连续字符复制到d中。(从0开始)

#include<string.h>

int main(
{
    char* s="GoldenGlobalView";
    char d[20];
    memcpy(d,s+12,4);    //从第13个字符(V)开始复制,连续复制4个字符(View)
    d[4]='\0';           //memcpy(d,s+14*sizeof(char),4*sizeof(char));也可
    printf("%s",d);
    getchar();
    return 0;
}

输出结果:
View

12. int sprintf( char *buffer,const char *format [,argument] … ):把格式化的数据写入某个字符串

函数功能:把格式化的数据写入某个字符串
函数原型:int sprintf( char *buffer,argument] … );
返回值:字符串长度(strlen)
例子:
char* who = "I";
char* whom = "CSDN";
sprintf(s,"%s love %s.",who,whom); //产生:"I love CSDN. " 这字符串写到s中
sprintf(s,"%10.3f",3.1415626); //产生:" 3.142"

13. (long)getpid():获取当前进程ID

返回值:int

14. char *getlogin() : 获取系统登陆时间用户名

#include <unistd.h>

15. exit(0)与_exit(0)的区别在于一个父进程退出,一个子进程退出

16. getpgid(),   int  setpgid(pid_t pid,pid_t pgid) : 获取and设置进程组

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
 
int main()
{
    pid_t pid;
    if ((pid = fork()) < 0) 
    {
        perror("fork");
        exit(1);
    }
    else if (pid == 0) 
    {
        printf("child PID = %d\n",getpid());
        printf("child Group ID = %d\n",getpgid(0)); //返回组id
        sleep(7);
        printf("-------Group ID of child  id change to %d\n",getpgid(0));
        exit(0);
    }
    else if (pid > 0) 
    {
        sleep(1);
        setpgid(pid,pid); //让子进程自立门户,成为进程组组长,以它的pid为进程组 id 
 
        sleep(13);
        printf("\n");
        printf("parent PID = %d\n",getpid());
        printf("parent's parent PID = %d\n",getppid());
        printf(" parent Group ID = %d\n",getpgid(0));
 
        sleep(5);
        setpgid(getpid(),getppid());  //改变父进程组id为父进程的父进程
        printf("\n-------Group ID of parent is change to %d\n",getpgid(0));
 
        while (1);
    }
    return 0;
}

输出结果:

17. getpwnam :获取登陆用户相关信息

#include <stdio.h>
#include <pwd.h>
int main()
{
    struct passwd * pw;
    char *username = "zxl";
    pw = getpwnam(username);
    if (!pw) {
        printf("%s is not exist\n",username);
        return -1;
    }
    printf("pw->pw_name = %s\n",pw->pw_name);
    printf("pw->pw_passwd = %s\n",pw->pw_passwd);
    printf("pw->pw_uid = %d\n",pw->pw_uid);
    printf("pw->pw_gid = %d\n",pw->pw_gid);
    printf("pw->pw_gecos = %s\n",pw->pw_gecos);
    printf("pw->pw_dir = %s\n",pw->pw_dir);
    printf("pw->pw_shell = %s\n",pw->pw_shell);
}

19. snprintf:

#include<stdio.h>
#include<stdlib.h>

int main()
{ 
  char str[10]={0};
  int nLen=snprintf(str,sizeof(str),"123456789012345678");
  printf("str=%s\n",str);
  printf("nLen=%d\n",nLen);
  return 0;
}

运行结果:
str=123456789
nLen=18

 

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐