【问题标题】:How to continue reading from a file when strtok returns NULLstrtok返回NULL时如何继续从文件中读取
【发布时间】:2015-05-13 09:25:49
【问题描述】:

我有一个文本文件:

hdsf5 sd3 htf2

使用指针 a、b、c 并使用它们可以正常工作.. 但是

用我的代码阅读这样的行没问题,但如果“sd3”这样丢失怎么办:

hdsf5 htf2

我将如何继续从文件中读取,即使在这种情况下指针会返回 null。

如果(b == NULL) 会很简单(指针在哪里就足够了?

编辑:我有这样的代码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main (int argc, char * argv[])
{
    FILE * ptr;
    char str[100];
    char * a, * b, * c;
    //while loop using fgets...
    // strtok each one...

   //convert each one to an integer using (atol())
  //this is where the seg fault/problem occur
}

【问题讨论】:

    标签: c file printing segmentation-fault arguments


    【解决方案1】:

    我认为您在这里混合了概念:strtok 适用于 const char * 字符串。
    您可以通过fscanffreadfgets 等读取文本文件来获取字符串。

    strtok 返回 NULL 表示您的字符串中没有更多标记,但这并不意味着您不能继续读取文件(即获取新字符串以进行标记):fscanf 等的返回值将告诉你。

    【讨论】:

    • 我已经编辑了代码,我忘了提到我在将每个 char 转换为 int 之后,但是,如果我说一行包含所有这三个字符串,而下一行只包含两个,这就是问题发生的地方。
    • 能否也提供fgetsatol循环的代码?
    猜你喜欢
    • 2013-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-15
    • 1970-01-01
    • 2017-12-03
    • 2015-06-21
    • 2020-03-16
    相关资源
    最近更新 更多