如何在C中的文件中将单词与数字分开

时间:2018-08-14 10:21:38

标签: c

我需要找到文件中一组数字的求逆度。

我从 -----BEGIN PUBLIC KEY----- dsbsjhbgjpublickeycharacters -----END PUBLIC KEY----- 文件中读取输入,格式为:

.txt

我不知道如何分隔输入(集合及其编号)。我曾想过将它们放在一个结构中,但到目前为止它没有用。 反转度 =小于索引值的数字数。例如,在SET 2中,反转度为0。

1 个答案:

答案 0 :(得分:0)

您需要在卡住的地方张贴代码;那是获得帮助的最好方法。 无论如何,这里有一些粗略的代码可帮助您确定问题所在。我一直很简单,让您了解Vanilla C如何执行I / O。

#include <stdio.h>                   /* snprinf, fprintf fgets, fopen, sscanf */

int main(void)
{
  char line_buffer[64];
  FILE* infile = fopen("yourfile.txt", "r");         /* open file for reading */
  while(fgets(line_buffer, 64, infile) != NULL)
  {
    char set_name[8];                 /* construct a string w/ the set number */
    snprintf(set_name, 8, "SET %c:", *(line_buffer+4));    /* no. is 5th char */
    fprintf(stdout, "%s ", set_name);           /* fprintf w/ stdout = printf */

    int set[8];
    int ind = 0;
    for(int i=7; line_buffer[i]!='\0';)    /* start from first number and end */
    {                       /* when string ends, denoted by the '\0' sentinel */
      int n;    /* using pointer arithmetric, read in and store num & consume */
      sscanf(line_buffer+i, "%d %n", set+ind, &n);     /* adjacent whitespace */
      i += n;               /* n from sscanf tells how many chars are read in */
      fprintf(stdout, "%d ", set[ind]);
      ind +=1;
    }

    fprintf(stdout, "\n");
  }

  return 0;
}