c语言如何抽取指定字符串。

作者&投稿:藏都 (若有异议请与网页底部的电邮联系)
c#如何提取指定字符串~

在我们的生活中那,如何操作上述标题的小问题,今天就在这里给大家分享一点我的小经验,来增加我们的体验,希望可以给你们带来帮助。

方法/步骤
首先确定要提取的子字符串的长度,用指针指向该字符地址,这时需要判断剩余字符长度是否比len长,如果少于len则需让len等于n。这时就可以复制src字符串中的字符到dst中,最后由于要求dst末尾以NULL结尾,所以让其末尾为‘\0’。
strtok函数的实质上的处理是,strtok在s中查找包含在delim中的字符并用NULL(’/0′)来替换,直到找遍整个字符串。这句话有两层含义:(1)每次调用strtok函数只能获得一个分割单位。(2)要获得所有的分割单元必须反复调用strtok函数。

当这两个语句编译后,编译器会将“abc”放在常量区中,而strtok(char *s, char *delim)函数是在s中查找包含在delim中的字符并用NULL(’/0′)来替换,直到找遍整个字符串。这句话就能体现指针和数组的区别:既然查找就要p++/b++。
strtok调用中用NULL来代替s的原因就是防止p被重新赋值而指向s的起始地址,从而可以保证p可以指向s的其他位置,直到最后分割完整个字符串。
但是如果用s来代替NULL,那么每次调用strtok时,p就会指向s的初始地址,从而只能获得第一个分割出来的字串其中 startpos 是起始字符的序号,length是[从 startpos 开始]取的字符串长度(包括startpos )。
如果找到指定的字符则返回该字符所在地址,否则返回 NULL。返回的地址是字符串在内存中随机分配的地址再加上你所搜索的字符在字符串位置。设字符在字符串中首次出现的位置为 i,那么返回的地址可以理解为 str + i。

用JQuery写
function QueryStr(split) {
split = split.split('.');
var result = split[1];
return result;
}
$(function () {
alert(QueryStr("www.baidu.com"));
});
会弹出
用Asp.Net 写
string url = "www.baidu.com";
string[] split = url.Split('.');
string result = split[1];
Label1.Text = result;

扩展资料:
字符串在存储上类似字符数组,它每一位单个元素都是能提取的,字符串的零位是它的长度,如s[0]=10,这提供给我们很多方便,例如高精度运算时每一位都能转化为数字存入数组。
通常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存储方式和链接存储方式。
参考资料来源:百度百科-字符串

#include <stdio.h>
#include <string.h>
void prefix(char *str){

int i;

int foo,bar;
for(i=strlen(str);i>0;i--){
if(2>sscanf(&str[i-1],"%d.%d",&foo,&bar)){
if(1==sscanf(&str[i],".%d",&foo)){
//我们在这个预处理过程根本不关心到底读到什么了,
//所以sscanf读到的这个整数值很快就抛弃
str[i]='#';
}
}
}
}
int main(){
char *str="13.3iua44abk..4.4...555kisuea99.99.bc";
double num;
int indexStart=0;
int read;
int count=0;
int ret;
char buf[100];
strcpy(buf,str);
prefix(buf);
while(EOF!=(ret=sscanf(buf + indexStart,"%lf%n",&num,&read))){
if(ret==0){
indexStart += 1;
continue;
}
printf("第%d个数字是:%lf\n",count + 1,num);
printf("(从%d到%d)\n",indexStart ,indexStart + read);
indexStart += read;
count ++;
}

return 0;
}

注意我的prefix函数。

如果不调用prefix,那么结果就是:
第1个数字是:13.300000
(从0到4)
第2个数字是:44.000000
(从7到9)
第3个数字是:0.400000
(从13到15)
第4个数字是:0.400000
(从15到17)
第5个数字是:0.555000
(从19到23)
第6个数字是:99.990000
(从29到34)

换句话说, ..4.4. 会被辨认成 0.4和0.4。这显然不是我们想要的结果。

(习惯上,我们觉得一个小数不应该用小数点开始。整数位为0的小数本应该用0来表示整数位才对。)

调用了prefix函数后,prefix函数会将这些讨厌的小数点好换成#号,这样就不会出错了。

用strstr函数

#include <string.h>
char *strstr(const char *src,char *sub) src=13.3iua44abk..4.4...555kisuea99.99.bc
sub=13.3/44/4.4/555/99.99
这个函数的返回是src中第一个符合sub的指针,如果没有则返回NULL

具体解释与示例可以看KEIL的帮助。

这个吗,字符和数字的ASCII编码的范围不同,思路。。。。

C语言字符串的学习,输入指定字符串,并且计算字符串的位数




易语言怎么随机取指定50个汉字中的几个呢
.版本 2 .程序集 窗口程序集_启动窗口 .程序集变量 字数, 整数型 .程序集变量 取字, 整数型 .程序集变量 计次, 整数型 .程序集变量 不重复, 文本型, , "0".程序集变量 文本, 文本型 .子程序 __启动窗口_创建完毕 标签1.标题 = “输入汉字”标签2.标题 = “取几个字”标签3.标题 ...

c语言如何取单个汉字
\/\/一个汉字占两个字节,且第一个字节第首位为1#include <stdio.h>#include <string.h>int main(){ char a[] = {"我是在在雷达百无一用夺"}; char b[3]; int i; printf ("len=%d\\n", strlen(a)); for (i = 0; i < strlen(a); ++i){ if (a[i] <...

易语言指定去字母或数字
那要两个编辑框,一个是去掉空格前的,一个是空格后的。空格前的通过寻找文本,找出你要的字母,再寻找文本,找出空格的位置。然后比较字母的位置和格的位置。如果小于则可以替换掉字母。空格后的类似

易语言从一段文本中截取一些指定的数字字母,类似于搜索功能不过那些数 ...
图片里面的文本就不能复制吗?搞个图片格式,敲键盘累死了,还会出错,不过大概就这样,不能用自己再改改吧 “.*?(item_id=\\d.*).*?(” + #引号 + “flsHb” + #引号 + “:” + #引号 + “\\d_\\d.*)”

易语言如何从一段文本中随机提取6个字呢
这个就是了!你把这个照着输入就行了!!但是其中看你输入的文本复杂程度!!!如果你这个文本中包含一些特殊字符!!不全是汉字的话!还得再这个里面加上一段判断文本格式得代码!!!

易语言怎么取出两个特定文字之间的内容啊?
.版本 2 .子程序 取指定内容, 文本型 .参数 完整内容, 文本型 .参数 左边文本, 文本型 .参数 右边文本, 文本型 .局部变量 临时位置, 整数型 .局部变量 总长度, 整数型 .局部变量 临时内容, 文本型 总长度 = 取文本长度 (完整内容)临时位置 = 寻找文本 (完整内容, 左边文本, , 假) +...

求教c语言怎么将字符串指定字符后面的数字提取,然后放入其他字符串...
情况1:输出数组字符串,字符串输出遇见'\\0',表示结束 情况2:按照单个字节打印,

c语言 如何达到输入一句中文输出指定的中文?
C语言中,汉字是用字符串来存储的,因为,汉字是多字节组成(GBK字符集一个汉字占两个字节,UTF8字符集,一个汉字占三个字节),所以,标准C中,只能用字符串来存储汉字数据。可以采用字符串输入函数来输入中文。判断中文是不是指定数据,可以用strcmp()函数来进行比较 中文输出,可用printf("%s")来...

C语言如何读取文件中指定的某一段
使用fread函数读取指定长度的字符串,即使包含\\n也会被读取,可以首先使用fseek定位到文件结尾,然后ftell函数返回的值就是文件的大小,这样就可以用循环多次读取文件,直到读取所有内容 FILE *file = NULL;char szFile[1025] = {0};int nHadRead = 0;file = fopen( "file.txt", "r+");if ( ...

如何用PERL语言在字符串寻找指定的字符是否存在.
1.Result = ($Data =~ \/[<>]\/)?"FAIL":"PASS";2.($Data =~ \/\\)(.*?)=\/) and ($R = $1);

黄州区18087752712: c语言如何抽取指定字符串. -
亥平东药: #include <stdio.h>#include <string.h> void prefix(char *str){ int i; int foo,bar; for(i=strlen(str);i>0;i--){ if(2>sscanf(&str[i-1],"%d.%d",&foo,&bar)){ if(1==sscanf(&str[i],".%d",&foo)){ //我们在这个预处理过程根本不关心到底读到什么了, //所以sscanf...

黄州区18087752712: c语言中如何取指定位置的字符串 -
亥平东药: char a[4]; int n=2; char b[4]; char c[4]; strncpy(b,a,n); sprintf(c,"%s",StringLeft(a,4-n));

黄州区18087752712: C语言中怎么提取特定的字符串呀,有这样的函数吗 -
亥平东药: 有几个函数 你可以根据需求使用 strstr 可以在字符串中查找另一个字符串 用来提取也可以 strchr 可以找字符 sscanf 类似于scanf 可以格式化提取.

黄州区18087752712: C语言编写一个程序从特定的文件中提取特定的字符串. -
亥平东药: 按你追问的要求改了一下.这段代码能把键盘输入的特定字符串后面双引号内的文字提取出来存入XYZ.txt文件中.在提取过程中滤除了源文件中的'\n'和' '.供参考…… #include "stdio.h"// #include "string.h"// #include "stdlib.h"// void main(...

黄州区18087752712: 如何用C语言实现一个字符串的截取 -
亥平东药: char*subString(char*str,intstar,intlen)这个原型声明没有问题,传递进去一个字符串,起始字符的位置,以及截取的长度.按照这个意思来写最后是没有问题的.返回值为字符型指针可以在这个函数里面声明一个字符数组,最后将这个字符数组返回,...

黄州区18087752712: C语言程序从文件读取特定的字符串 -
亥平东药: #include<stdio.h> int a; char b,c[100]; bool compare(char *s){if(s[0]=='A'&&s[1]=='B'&&s[2]=='C'&&s[3]=='D')return true;return false; } int main(){FILE * fp1 = fopen("D://input.txt", "r");//打开输入文件FILE * fp2 = fopen("D://output.txt", "w...

黄州区18087752712: C语言如何取一串字符串中的某个字符 -
亥平东药: C中的字符串就是一个字符数组. 如: char s[10]="wo shi SB"; char c; 取最左边的字符,就是c=s[0];

黄州区18087752712: C程序,如何从指定文件中读取一个字符串? -
亥平东药: #include <stdio.h>#include <stdlib.h> int main() { FILE *fp; char cl[100]; if((fp=fopen("1.txt","r"))==NULL) exit(1); while(fscanf(fp,"%s",cl)==1) printf("%s \n",cl); if(fclose(fp)!=0) exit(1); return 0; } C语言是目前世界上流行、使用最广泛的面向过程的高级程序设计语言. C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,许多大型应用软件都是用C语言编写的.

黄州区18087752712: C语言如何定位抓取文件中的字符串 -
亥平东药: 可以使用输入输出重定向来将TXT文本中的字符内容导入程序中,或者使用标准C库函数:fopen()和fgetc();先使用fopen()函数打开TXT文本文件,然后使用fgetc读取文本文件中的字符.读取全部文本中全部字符可以使用一个while循环...

黄州区18087752712: c语言中怎么查找指定字符串 -
亥平东药: 程序没有找到字符的时候,你就break,退出循环了.把这一句去掉就可以了.修改如下 : #include <stdio.h> #include <string.h>void main() {char sh[20];gets(sh); for(int i=0;i<20;i++){if(sh[i]!='@'){printf("没有字符 @\n");//break; 把这一句去掉.}else{printf("有字符 @\n");break;}} }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网