先定义了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
转载于:https://blog.51cto.com/matrix6ro/1897808