从字符串中提取整数

部分整理自:https://blog.csdn.net/liangxanhai/article/details/8026496

首先说一下我要做的事情:
从一个txt文件中(存着一个矩阵),从这个文件中提取出这个文件中的整数。
矩阵:
1 2 3 4
5 6 7 8
0 1 8 7
3 8 2 9

之前用的函数是fgets()。
char *  fgets(char * s, int n,FILE *stream);
参数:

     s: 字符型指针,指向存储读入数据的缓冲区的地址。

     n: 从流中读入n-1个字符

     stream : 指向读取的流。

返回值:

      1. 当n<=0 时返回NULL,即空指针。

      2. 当n=1 时,返回空串"".

      3. 如果读入成功,则返回缓冲区的地址。

      4. 如果读入错误或遇到文件结尾(EOF),则返回NULL.

但是取出一行字符串以后还是一个字符串,还要考虑从字符串中取出整数,要判断空格之类的,感觉有点儿费劲(其实是没整明白)

然后就查啊查,get到了一个超级好用的函数!Wow~
fscanf 函数:

功 能: 从一个流中执行格式化输入,fscanf遇到空格和换行时结束,注意空格时也结束。

用 法:int fscanf(FILE *stream, char *format,[argument…]);

int fscanf(文件指针,格式字符串,输入列表);

for example:

FILE*fp;

chara[10];

intb;

doublec;

fscanf(fp,"%s%d%lf",a,&b,&c)
  返回值:整型,数值等于[argument…]的个数
  我的实现代码是:

       FILE *f;
    f = fopen("data.txt","r");
    if(NULL == f)
    {
		printf("error");
    } 

    int data_1;
    while( 1 == fscanf(f, "%d", &data_1) ){
        printf("%d",data_1);
    } 

哈哈哈,就是这么简单啦,然后输出的就是:
1234567801873829

这就达到了我如此简单的目的。。。

如果有大神看到,请大神帮我指出明路,给一些建议,例如学习C语言,CUDA语言,并行计算之类的经验。
感谢!

你可能感兴趣的:(写代码(C语言))