Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
3.6k views
in Technique[技术] by (71.8m points)

c - Is there any way to return a string starting at a certain index without using the library functions

char* string = "Hello, what's up?";

and I want to just return

"at's up?"


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You can write a function. If the function shall not use standard C string functions then it can look for example the following way

char * substr( char *s, size_t pos )
{
    size_t i = 0;

    while ( i < pos && s[i] ) ++i;

    return s + i;
}

As C does not support function overloading then the function above can be also written like

char * substr( const char *s, size_t pos )
{
    size_t i = 0;

    while ( i < pos && s[i] ) ++i;

    return ( char * )( s + i );
}

Here is a demonstrative program.

#include <stdio.h>

char * substr( const char *s, size_t pos )
{
    size_t i = 0;

    while ( i < pos && s[i] ) ++i;

    return ( char * )( s + i );
}

int main(void) 
{
    char * s = "Hello, what's up?";
    
    puts( substr( s, 9 ) );
    
    return 0;
}

The program output is

at's up?

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

57.0k users

...