先定义了rtrim 去除空白符,因为fgets 会读取“\n”

再定义截取字符串的函数getSubString;


/*
* C Program to print sub-string of a string
*/
#include <stdio.h>
#include <string.h>
#include <ctype.h>

void rtrim(char *str);
char* getSubString(char* inputString, char* subString,
    int index);
int main(){
    char inputString[100], subString[100];
    int index;
    printf("Enter a String \n");
    // gets(inputString);
    fgets(inputString, (sizeof inputString / sizeof inputString[0]), stdin);
    rtrim(inputString);

    printf("Enter starting position of sub-string and it's length \n");
    scanf("%d", &index);

    printf("SubString is : %s \n", getSubString(inputString,
        subString, index));
    return 0;
}

/*
 * Function to return substring of inputString starting 
 * at position index and of length subStringLength
 */
char* getSubString(char* inputString, char* subString,
    int index){
    int counter, subStringLength, inputStringLength = strlen(inputString);
    /* Input validation 
     * range of sub-string must be in [0, strlen(inputString)]
     */
    if(index < 0 || index > inputStringLength){
        printf("Invalid Input");
        return NULL;
    }
    subStringLength = inputStringLength - index;
    for(counter = 0; counter < subStringLength; counter++){
        subString[counter] = inputString[index++];
    }
    subString[counter] = '\0';
    
    return subString;
}

void rtrim(char *str)
{
  char *s;
  s = str + strlen(str);
  while (--s >= str) {
    if (!isspace(*s)) break;
    *s = 0;
  }
}



进行字符串反转的例子:

#include <stdio.h>
#include <conio.h>
#include <string.h>
void main()
{
   char *str;
   int i,len;
  //not using any temp variable and assume we can use only string array and   length
   printf("Enter String : ");
   scanf("%s",str);
   len=strlen(str)-1;
   for(i=0;i<strlen(str)/2;i++)
   {
         str[i]+=str[len];
         str[len]=str[i]-str[len];
         str[i]=str[i]-str[len--];
   }
   printf("Reverse String is : %s",str);
   getch();
}


参考:


http://stackoverflow.com/questions/31314847/substring-in-c-programming?noredirect=1&lq=1

http://www.cnblogs.com/rosesmall/archive/2012/03/27/2420335.html


http://www.techcrashcourse.com/2014/11/c-program-find-substring-of-string.html

http://www.geekinterview.com/question_details/21969


https://en.wikipedia.org/wiki/Comparison_of_programming_languages_(string_functions)#C.2FC.2B.2B