字符串操作???
大家好,现在遇到一个问题,请高手进来解答下!
一个文本中有一行字符串,假设为“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给扣出来??有谁知道吗,谢谢!
[解决办法]
#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;}
[解决办法]
使用正则表达式:
#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));
}
}
}