strcpy() 函数注意的地方

// require user to enter name and handicap, if the name is exist, then return 1, or return 0.int setgolf(golf & g){    string temp;    cout << "Name: ";    getline(cin, temp);    if (temp == "") // whether temp is empty.    {        std::cout << "No name here. Bye!";        return 0;    } else        strcpy(g.fullname, temp.c_str());    int score;    cout << "Handicap: ";    cin >> score;    cin.get();    if(!score)        return 0;    g.handicap = score;    return 1;}

这里注意 temp.c_str() 
c_str()函数返回一个指向正规C字符串的指针常量, 内容与本string串相同.
这是为了与c语言兼容,在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式。
注意:一定要使用strcpy()函数 等来操作方法c_str()返回的指针 

原文地址:https://www.cnblogs.com/TadGuo/p/8178654.html

时间: 2024-08-04 13:39:17

strcpy() 函数注意的地方的相关文章

字符数组拷贝与strcpy函数

代码: char str1[10],str2[10]; for (int i=0;i<10;i++) { str1[i]='a'; } strcpy(str2,str1); 让找出错误的地方. 先来看下strcpy函数: 使用格式:char* strcmp(char* buffer,char*str)功 能: 把从str地址开始且含有NULL结束符的字符串复制到以buffer开始的地址空间,buffer地址空间中必须有足够的空间来容纳str的字符串. 转自此文 所以上面代码错误的地方就是str1

strcpy函数的实现

大家一般觉得名不见经传strcpy函数实现不是非常难,流行的strcpy函数写法是: char *my_strcpy(char *dst,const char *src) { assert(dst != NULL); assert(src != NULL); char *ret = dst; while((* dst++ = * src++) != '\0') ; return ret; } 假设注意到: 1,检查指针有效性: 2,返回目的指针des: 3,源字符串的末尾 '\0' 须要拷贝.

编写一个程序实现strcpy函数的功能

1 #include <stdio.h> 2 #include <string.h> 3 #define N 5 4 5 6 char *mycpy(char *s1, char *s2) 7 { 8 //数组型 9 /* int i; 10 while(s2[i] != '\0') { 11 s1[i] = s2[i]; 12 i++; 13 } 14 s1[i] = '\0'; 15 return s1; */ 16 //指针型 17 char *p = s1; 18 whil

strcpy函数的最优实现方法

微软自带的strcpy函数: (不完善,4分) charcharconstchar char while'\0' return } 最完善的strcpy函数: (推荐使用,10分) charcharconstchar//将源字符串加const,表明其为输入参数不能修改 if//考虑到源字符串和目的字符串有重叠,也即地址相同 return //对源地址和目的地址加非空地址断言 char//备份目的字符串的首地址,由于后面的操作会修改dest值 while'\0' return//为了实现链式操作,

strcmp函数和strcpy函数

(一)strcmp函数 strcmp函数是比較两个字符串的大小,返回比較的结果.一般形式是: i=strcmp(字符串,字符串); 当中,字符串1.字符串2均可为字符串常量或变量:i   是用于存放比較结果的整型变量.比較结果是这样规定的: ①字符串1小于字符串2,strcmp函数返回一个负值; ②字符串1等于字符串2,strcmp函数返回零; ③字符串1大于字符串2,strcmp函数返回一个正值;那么,字符中的大小是怎样比較的呢?来看一个样例. 实际上,字符串的比較是比較字符串中各对字符的AS

通过编写字符复制函数strcpy函数学编程

首先我们先来开一下标准函数中的strcpy长什么样子 C语言标准库函数strcpy,把从src地址开始且含有'\0'结束符的字符串复制到以dest开始的地址空间. 原型声明:char *strcpy(char* dest, const char *src); 头文件:#include <string.h> 和 #include <stdio.h> 功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间 说明:src和dest所指内存区域不可以重叠且des

strcpy函数的实现【转】

转自:http://www.cnblogs.com/chenyg32/p/3739564.html 已知strcpy函数的原型是: char *strcpy(char *dst, const char *src); 实现strcpy函数 解释为什么要返回char * 假如考虑dst和src内存重叠的情况,strcpy该怎么实现 1.strcpy的实现代码 char * strcpy(char *dst,const char *src) //[1] { assert(dst != NULL &&am

strcpy函数和string类的实现

1 strcpy函数实现 void* memcpy1(void *dst,const void *src,int count){ assert(dst != NULL && src!= NULL && count>=0); void *temp = dst; char *pdst = (char*)dst; char *psrc = (char*)src; if(pdst>=psrc && pdst <= psrc+count-1) { p

memcpy、memmove、memset及strcpy函数实现和理解

memcpy.memmove.memset及strcpy函数实现和理解 关于memcpy memcpy是C和C++ 中的内存拷贝函数,在C中所需的头文件是#include<string.h>, 在C++中需要包含的头文件是#include其函数原型如下: void *memcpy(void *dest, const void *src, size_t n); 其功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中. 库函数中的memcpy不能处理sr