从文件中读取特定字符

时间:2020-08-27 10:36:47

标签: c file

我正在尝试创建一个函数,该函数读取包含数据的文本文件并将其分配给变量。但是有些行以$开头,需要忽略。例如:

$ Monday test results
10 12
$ Tuesday test results
4

这是我到目前为止打印出的内容:

10 12
4

执行此操作的代码是:

#include <stdio.h>
#include <stdlib.h>

void read_data(){
  FILE* f;

  if (f = fopen("testdata.txt", "r")) {
       char line[100];
       while (!feof(f)) {
             fgets(line, 100, f);
             if (line[0] == '$') {
                  continue;
             } else{
                  puts(line);
             }
      }
  } else {
            exit(1);
   }
fclose(f);
}
void main(){
read_data();
return 0;
}

我尝试过fgetc并在Google上进行了广泛的搜索,但仍然陷于困境;(

**编辑 添加了#include和main

我要问的是如何分配,例如a = 10,b = 12,c =4。因为使用fgets是用于行,所以很麻烦。尝试使用fgetc,但只会忽略实际的$符号,而不是$所在的整行

1 个答案:

答案 0 :(得分:1)

C string.h库函数-strtok()

char *strtok(char *str, const char *delim)
  • str-该字符串的内容被修改并分解为较小的字符串(令牌)。
  • delim-这是包含定界符的C字符串。这些可能因一个呼叫而异。

此函数返回一个指针,该指针指向字符串中找到的第一个标记。如果没有要检索的令牌,则返回空指针。

复制自:https://www.tutorialspoint.com/c_standard_library/c_function_strtok.htm

#include <string.h>
#include <stdio.h>

int main () {
   char str[80] = "This is - www.tutorialspoint.com - website";
   const char s[2] = "-";
   char *token;
   
   /* get the first token */
   token = strtok(str, s);
   
   /* walk through other tokens */
   while( token != NULL ) {
      printf( " %s\n", token );
    
      token = strtok(NULL, s);
   }
   
   return(0);
}

输出:

This is 
  www.tutorialspoint.com 
  website
相关问题