字符串 函数sprintf、strcpy 、strncpy及 memcpy , strftime,strcat

1662阅读 0评论2012-02-06 桔色花朵
分类:


strcpy:字串复制
  原型声明:extern char *strcpy(char *dest,const char *src);
  头文件:
  功能:把从src地址开始且含有NULL结束符('\0')的字符串赋值到以dest开始的地址空间
  说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
  返回指向dest的指针。

strncpy:字串复制
原型:char * strncpy(char *dest, char *src,  n);
  功能:将字符串src中最多n个字符复制到字符数组dest中(它并不像strcpy一样遇到NULL才停止复制,而是等凑够n个字符才开始复制),返回指向dest的指针。
  说明:
  如果n > dest串长度,dest栈空间溢出产生崩溃异常。
  否则:
  1)src串长度<=dest串长度,(这里的串长度包含串尾NULL字符)
  如果n=(0, src串长度),src的前n个字符复制到dest中。但是由于没有NULL字符,所以直接访问dest串会发生栈溢出的异常情况。
  如果n = src串长度,与strcpy一致。
  如果n = dest串长度,[0,src串长度]处存放于desk字串,(src串长度, dest串长度]处存放NULL。
  2)src串长度>dest串长度
  如果n =dest串长度,则dest串没有NULL字符,会导致输出会有。如果不考虑src串复制完整性,可以将dest最后一字符置为NULL。
  综上,一般情况下,使用strncpy时,建议将n置为dest串长度(除非你将多个src串都复制到dest数组,并且从dest尾部反向操作),复制完毕后,为保险起见,将dest串最后一字符置NULL,避免发生在第2)种情况下的输出乱码问题。当然喽,无论是strcpy还是strncpy,保证src串长度


sprintf
  函数功能:把格式化的数据写入某个字符串, 可以连接多个不同类型的字符串
  头文件:
  函数原型:int sprintf( char *buffer, const char *format [, argument] … );
  返回值:字符串长度(strlen)
sprintf 最常见的应用之一莫过于把整数打印到字符串中,所以,sprintf 在大多数场合可以替代
  itoa。
  如:
  //把整数123 打印成一个字符串保存在s 中。
  sprintf(s, "%d", 123); //产生"123"
  可以指定宽度,不足的左边补空格:
  sprintf(s, "%8d%8d", 123, 4567); //产生:" 123 4567"
  当然也可以左对齐:
  sprintf(s, "%-8d%8d", 123, 4567); //产生:"123 4567"
  也可以按照16 进制打印:
  sprintf(s, "%8x", 4567); //小写16 进制,宽度占8 个位置,
  sprintf(s, "%-8X", 4568); //大写16 进制,宽度占8 个位置,左对齐

snprintf

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

函数说明:最多从源串中拷贝n1个字符到目标串中,然后再在后面加一个0。所以如果目标串的大小为n

                 的话,将不会溢出。

函数返回值:若成功则返回欲写入的字符串长度,若出错则返回负值。



strftime打印时间字符串
size_t strftime ( char * ptr, size_t maxsize, const char * format, const struct tm * timeptr );

例子:
   time_t t = time(0);  //获取时间
  //产生"YYYY-MM-DD hh:mm:ss"格式的字符串。
  char s[32];
  strftime(s, sizeof(s), "%Y-%m-%d %H:%M:%S", localtime(&t));

memcpy  原型:extern void *memcpy(void *dest, void *src, unsigned int count); 用法:#include 功能:由src所指内存区域复制count个字节到dest所指内存区域。 说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针。 举例: // memcpy.c #include #include main() { char *s="Golden Global View"; char d[20]; clrscr(); memcpy(d,s,strlen(s)); d[strlen(s)]=0; printf("%s",d); getchar(); return 0; }


strcat
原型  extern char *strcat(char *dest,char *src);用法  #include
  在C++中,则存在于头文件中。功能  把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。说明  src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
  返回指向dest的指针。



上一篇:automake的简要使用
下一篇:C语言——可变参数