吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1009|回复: 3
收起左侧

[已解决] 请用C/C++操作字符串输出

[复制链接]
朱朱你堕落了 发表于 2023-8-26 13:13
300吾爱币
本帖最后由 朱朱你堕落了 于 2023-8-26 13:17 编辑

如字符串

char szBuf[] = "abcdefg"; 也可以很长,如char szBuf[] = "123456789012345678901234567890xyz";

就是说,字符串长度不定,如何从最后面向前输出n个长度的字符串?

如,输出3个长度吧,

那么
char szBuf[] = "abcdefg";
从最后面开始向前找,输出就是efg

如果是
char szBuf[] = "123456789012345678901234567890xyz";
从最后面开始向前找,输出就是xyz


请分别用C语言和C++语言(string类即可)都实现一下,写函数吧,

比方说C++吧,
string strRet(string src, int n)
{
//....
}

要求代码严谨一些,如src判断不能是空,n的长度肯定不能大于字符串本身的长度,如本身字符串长度是3个,n都大于3个,
这么取肯定不行啊。不多说了,很基础很简单,但是我不会,哈哈。

不要使用C++ 11等新特性函数,我VS2008编译器版本比较低,
用法太高级,我编译器会编译不通过的!!!谢谢各位大佬。

最佳答案

查看完整内容

搞起! [mw_shl_code=cpp,true]string getRetCPP(string str, int n){ if (str.length()

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Cool_Breeze 发表于 2023-8-26 13:13
搞起!

[C++] 纯文本查看 复制代码
string getRetCPP(string str, int n){
    
    if (str.length() <= n) return str;
    return str.substr(str.length()-n, n);
}

const char *getRetC(const char *str, int n){
    
    int str_len = strlen(str);
    if (str_len <= n) return str;
    return str+str_len-n;
}


int main(void){
          cout << getRetCPP("ABCDEFG", 4) << endl;
          cout << getRetC("ABc123AA123", 2) << endl;
    return 0;
}
怜渠客 发表于 2023-8-26 13:43
C语言:
[C] 纯文本查看 复制代码
#include <stdio.h>
#include <string.h>

void getTrail(char *input, int n) {
        int length = strlen(input);
        if (n >= length) {
                printf("n should less than length.\n");
                return;
        }
        
        printf("%s",  input + length - n);
}

int main() {
        char input[] = "Hello, World!";
        int n = 5;
        
        getTrail(input, n);
        
        return 0;
}


C++:
[C++] 纯文本查看 复制代码
#include <iostream>
#include <string>

void getTrail(const std::string& input, int n) {
	int length = input.length();
	if (n >= length) {
		std::cout << "Invalid n." << std::endl;
		return;
	}
	
	std::cout << input.substr(length - n) << std::endl;
}

int main() {
	std::string input = "Hello, World!";
	int n = 5;
	
	getTrail(input, n);
	
	return 0;
}

复制

点评

大佬,请修改下两个函数,让函数有返回值 如类似如下: char* getTrail(char *input, int n) { } string getTrail(const std::string& input, int n) { } 我在main函数里定义变量来接受返回值,  详情 回复 发表于 2023-8-26 14:00

免费评分

参与人数 1吾爱币 +3 热心值 +1 收起 理由
朱朱你堕落了 + 3 + 1 谢谢@Thanks!

查看全部评分

 楼主| 朱朱你堕落了 发表于 2023-8-26 14:00
lianquke 发表于 2023-8-26 13:43
C语言:
[mw_shl_code=c,true]#include
#include

大佬,请修改下两个函数,让函数有返回值

如类似如下:

char* getTrail(char *input, int n)
{
}

string getTrail(const std::string& input, int n)
{
}

我在main函数里定义变量来接受返回值,

如C语言版本:
char *pRet = getTrail(input, n);
printf("pRet = %s\n", pRet);
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 22:59

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表