【问题标题】:how to make arrays from txt file C如何从txt文件C制作数组
【发布时间】:2011-10-16 15:34:21
【问题描述】:

我得到带有信息的文本文件:(100;200;first)。谁能告诉我如何将此信息分成三个数组:Min=100,Max=200 和 Name =第一。这个我试过了

c=getc(inp);

i=atoi(szinput);

但它第一次读取为 10,第二次读取为 00……以此类推

c 保存 10 而不是 1,所以我无法获得正确的数组信息...

所以数组 Min 存储 1000 而不是 100

谢谢。

【问题讨论】:

    标签: c arrays file getc


    【解决方案1】:

    像这样使用scanffscanf

    scanf("(%d;%d;%[^)])",&min,&max,str);
    

    【讨论】:

      【解决方案2】:

      您可以执行以下操作

      FILE *file;
      char readBuffer[40];
      int c;
      file = fopen("your_file","r");
      while ((c=getc(file))!= EOF)
      {
          strcat(readBuffer, c);
          if( (char) c == ';')
        //this is the delimiter. Your min, max, name code goes here
      
      }
         fclose(file);
      

      【讨论】:

        【解决方案3】:

        这里有一个cool, simple tutorial 说明如何做到这一点。

        请注意,您需要稍微修改一下示例,但这应该不会太难。

        您也可以尝试找到一个可以完成这项工作的库,我敢肯定有很多这样的 C 库:)

        【讨论】:

          【解决方案4】:

          使用strtok():

          #include <stdio.h>
          #include <string.h>
          
          int main() { 
            char input[] = "100;200;first";
            char name[10];
            int min, max;
          
            char* result = NULL;
            char delims[] = ";";
          
            result = strtok(input, delims);
            // atoi() converts ascii to integer.
            min = atoi(result);
            result = strtok(NULL, delims);
            max = atoi(result);
            result = strtok(NULL, delims);
            strcpy(name, result);
            printf("Min=%d, Max=%d, Name=%s\n", min, max, name);
          }
          

          输出:

          Min=100, Max=200, Name=first
          

          【讨论】:

          • 不知道如何在没有 long long 类型的情况下将它与长数字(13 位数字)一起使用,我必须输入数字并说它在 400000000000 和 49999999999 之间,我发现了一些很长的答案long int,但我不允许使用它...有什么想法吗?
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-12-24
          • 1970-01-01
          • 2014-12-13
          • 1970-01-01
          相关资源
          最近更新 更多