读书人

字符串操作?解决思路

发布时间: 2012-09-22 21:54:54 作者: rapoo

字符串操作???
大家好,现在遇到一个问题,请高手进来解答下!

一个文本中有一行字符串,假设为“abcdefghijk123mnopq”,现在我获取123位置上的字符串,
现在我用
char msg[20];

FILE *fp;

if((fp=fopen("文件路径","r"))== NULL)
{
fprintf(stderr,"---can't open file---\n");
return 1;
}

fgets(msg,15,fp);

但是只能得到“abcdefghijk123”,请问怎么把123给扣出来??有谁知道吗,谢谢!

[解决办法]

C/C++ code
#include <string.h>#include <stdio.h>int main(int argc, char* argv[]){    char text[] = "abcdefghijk123mnopq";    char word[] = "123";    char match[32];    char* p;    int n;        p = strstr(text, word);    if(p == NULL)    {        printf("Not find %s\n", word);        }    else    {        n = strlen(word);        strncpy(match, p, n);        match[n] = '\0';        printf("find %s\n", match);    }    return 0;}
[解决办法]
使用正则表达式:
C/C++ code
#include <string.h>#include <stdio.h>int main(int argc, char* argv[]){    char text[] = "abcdefghijk1234577mnopq";    char match[50] = {0};    sscanf( text , "%*[^0-9]%[^a-zA-Z]" , match);    printf("%s\n",match);    return 0;}
[解决办法]
//字符串截取方法,参数依次是想得到的字符串, 原始字符串, 开始处, 结尾处,就会截取处中间部分
void CStringOperation::getSubString(char *returnStr,const char *str,const char *startStr , const char *endStr)
{
if(endStr&&startStr)
{
const char *startSign = strstr(str,startStr);
const char *endSign = strstr(startSign,endStr);
if(startSign&&endSign)
{
int len = endSign - startSign - strlen(startStr);
if (len>0&&len<1024)
{
strncpy(returnStr,startSign+strlen(startStr),len);
}
}
}
else if(startStr&&!endStr)
{
const char *startSign = strstr(str,startStr);
if(startSign)
{
strncpy(returnStr,startSign+strlen(startStr),strlen(startSign)-strlen(startStr));
}
}
}

读书人网 >C语言

热点推荐