0
点赞
收藏
分享

微信扫一扫

C++复制部分字符串

龙毓七七 2022-02-01 阅读 56

指针

详见:
https://www.nowcoder.com/practice/8f5b923683b94e549880e3c8370e3e55?tpId=225&tags=&title=&difficulty=0&judgeStatus=0&rp=0

#include <iostream>
using namespace std;

int main() {

    char str[30] = { 0 }; // 开辟一块最大长度为30的字符串空间。
    cin.getline(str, sizeof(str));

    int m;
    cin >> m;

    // write your code here......
    char copyStr[30] = { 0 };
    char* strPtr = str + m - 1; // 令指针指向字符数组的第m个元素
    char* copyStrPtr = copyStr; // 将变量名赋给指针,则指针指向字符数组变量的第1个元素
    while (*strPtr != NULL) { // 或 (*strPtr != '\0')
        *copyStrPtr = *strPtr; //复制 
        //两指针都后移
        strPtr++; 
        copyStrPtr++;
    }
    cout << copyStr << endl;

    return 0;
}

用string

#include <iostream>
using namespace std;

int main() {

    char str[30] = { 0 }; // 开辟一块最大长度为30的字符串空间。
    cin.getline(str, sizeof(str));

    int m;
    cin >> m;

    // write your code here......
    char* p = str; // cout << *p << endl;  输出的是 h。
    string s = p + m -1; // 直接利用string得到第m个元素后的剩余全部字符
    cout << s << endl;

    return 0;
}

用&

这个方法…不算懂。。。

#include <iostream>
using namespace std;

int main() {

    char str[30] = { 0 }; // 开辟一块最大长度为30的字符串空间。
    cin.getline(str, sizeof(str));

    int m;
    cin >> m;

    // write your code here......
    char *p = NULL;
    p = &str[m-1]; // 从第 m 个字符开始的剩余全部字符串的内存地址(指针)。
    cout << p << endl; // 打印内存地址(指针)即打印其指向的(字符串)内容。

    return 0;
}
举报

相关推荐

0 条评论