从文件中的数据结构写入字符串

时间:2018-08-25 11:07:48

标签: c data-structures file-handling

该程序应接收用户输入的一些单词字符串,将其保存在数据结构中,然后将所有内容打印到文件中。例如,如果我键入“ test one”,则应将其保存在inputs.one上,然后我应该在clients.txt上看到“ test one”。如果我键入“测试一”,“测试二”和“测试三”,则应该在client.txt上看到这三个输入。

问题在于该程序现在仅执行一个scanf而不是三个,这就是为什么我添加了三个scanf而不是仅执行一个scanf的原因。基本上,如果我输入“测试一”,它将只保存并打印测试一,而不询问其他两个输入,我不知道为什么。

额外:我添加了这些fget作为尝试正确保存输入的另一种方法,问题是fgets将把文件上的数据打印为

“测试一个  测试两个  测试三个”

而不是将所有内容都放在一行上,因此fgets都不起作用。

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

struct inputs {
   char one[30];
   char two[30]; 
   char three[30]; 
};

int main(void)
{  

   struct inputs inputs = {"", "", ""};

   FILE *cfPtr; // cfPtr = clients.txt file pointer   
   // fopen opens file. Exit program if unable to create file 
   if ((cfPtr = fopen("clients.txt", "w")) == NULL) {
      puts("File could not be opened");
   } 
   else { 
      puts("Enter one, two, three.");
      puts("Enter EOF to end input.");
      printf("%s", "? ");


      //scanf("%[^\n]s%[^\n]s%[^\n]s", inputs.via, inputs.nome, inputs.stars);


      /*
      fgets(inputs.one, 30, stdin);
      fgets(inputs.two, 30, stdin);
      fgets(inputs.three, 30, stdin);
      */



      while (!feof(stdin)) { 
         scanf("%[^\n]s", inputs.one);
         scanf("%[^\n]s", inputs.two);
         scanf("%[^\n]s", inputs.three);
         fprintf(cfPtr, "%s%s%s", inputs.one, inputs.two, inputs.three);
      }





      fclose(cfPtr); // fclose closes file   
   } 
} 

0 个答案:

没有答案