![[基础科学]如何从字符串中取数组.doc_第1页](http://file.renrendoc.com/FileRoot1/2019-1/5/3db8c88b-3d85-46b2-a5e0-8a5330bb353f/3db8c88b-3d85-46b2-a5e0-8a5330bb353f1.gif)
![[基础科学]如何从字符串中取数组.doc_第2页](http://file.renrendoc.com/FileRoot1/2019-1/5/3db8c88b-3d85-46b2-a5e0-8a5330bb353f/3db8c88b-3d85-46b2-a5e0-8a5330bb353f2.gif)
![[基础科学]如何从字符串中取数组.doc_第3页](http://file.renrendoc.com/FileRoot1/2019-1/5/3db8c88b-3d85-46b2-a5e0-8a5330bb353f/3db8c88b-3d85-46b2-a5e0-8a5330bb353f3.gif)
全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
如何从字符串中取数组 从字符串中取数据的问题,如果取固定个数的数值,利用sscanf就可以实现;但倘若遇到从字符串中取数组,且数组个数不固定的情况比如构造一个矩阵,其值从文件set.txt中读取1 2 3 4 5 6 7 8 9此文件中含有3*3的矩阵,当然也可能是n*n,那如何才能灵活地从文件中读取数据,构造各种大小的数组呢?经过查找,我发现了strsep函数,*函数:char * strtok_r (char *newstring, const char *delimiters, char *save_ptr) 就象strtok函数一样,strtok_r函数能够连续调用,以将一个字符串分解成为几个token。不同的时下一个strtok_r函数不会破坏这个函数的状态。因为它提供了一个指向不同函数的*save_ptr指针。 这个函数是POSIX.1b提出的建议,它被许多系统支持,以提供多线程的字符分解。 函数:char * strsep (char *string_ptr, const char *delimiter) 另一个可重入的方法是取消了第一个参数。初始时的指针由用户指定,后面调用的指针则由delimiter决定。返回下一个被分解的token。 这个函数是在4.3BSD系统中引入的,因此被广泛使用着。以下是一个使用strsep的实例: #include #include .char string = words separated by spaces - and, punctuation!;const char delimiters = .,;:!-;char *running;char *token;.running = string;token = strsep (&running, delimiters); /* token = words */token = strsep (&running, delimiters); /* token = separated */token = strsep (&running, delimiters); /* token = by */token = strsep (&running, delimiters); /* token = spaces */token = strsep (&running, delimiters); /* token = and */token = strsep (&running, delimiters); /* token = punctuation */token = strsep (&running, delimiters); /* token = NULL */*这个说明不是很明确,我自己写了个程序来使用这个函数#include #include int main() FILE *fp; char str20,*tmp,*substr=a; int t,data5; const char delimiters= ; Matrix m; ListMatrix l; fp = fopen(set.txt,r); while(fgets(str,20,fp)!=NULL) substr = str; int i=0; token = str; while(token!=NULL) token = strsep(&substr, ); if(*token=n) break; datasi+=atoi(token); m.setValue(datas); l.insert(m); fclose(fp); return 0;此程序每从文件中取到一行数值,将其置入一个数组内,再将此数组置入矩阵中.这里要注意这样几个问题:1,每行数值后需要多加一个分隔符,否则会取到n值,在linux下,文本是这样构成的 a b cn 因此,若不在最后加空格,最后一个token取到的为cn,因此取要在最后一个字符后加一个分隔符,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论