在C中将文本导出到.txt文件

时间:2015-11-14 16:00:41

标签: c windows exe

我的程序没有将任何内容导出到.txt文件;实际上,我甚至无法以这种形式编译它。

#include <stdio.h>

typedef struct                        /*We define structure type to save memory
                                      ( im not sure about this!!!)   */
{
        char name[20];
        int num;
        } cont;

void input(cont a[],int n)              /*With this function i enter data in main program.*/
{
     int i;
     for(i=0;i<n;i++)
     {
                     printf("Insert name:");
                     scanf("%s",&a[i].name);
                     printf("Insert number:");
                     scanf("%d",&a[i].num);
                     printf("\n\n\n");
                     }
                     }

void export(cont a[],int n)       /*Export data that is entered in main program to text file
                                  output.txt that is in same folder as program*/
{
     FILE *text;
     int i;
     text=fopen("output.txt","w");
     fprintf(text,"Name:%s\nNumber:%d\n",a[i].name,a[i].num);
     fclose(text);
     }

void printinprog(cont a[],int n)          /*This just prints data in program so we can check
                                          that program works correctly.*/
{
     int i;
     for(i=0;i<n;i++)
     {
                     printf("Name:%s   Number:%d",a[i].name,a[i].num);
                     printf("\n\n");
                     }
                     }
main()
{
      cont per[20];
      int c; 
      printf("Enter number of contacts:");            
      scanf("%d",&c);
      input(per,c);                            
      export(per,c);
      system("pause");
      }

因此,当我将导出函数的主要部分移动到printinprog函数时,它看起来像这样:

#include <stdio.h>

typedef struct                        /*We define structure type to save memory
                                      ( im not sure about this!!!)   */
{
        char name[20];
        int num;
        } cont;

void input(cont a[],int n)              /*With this function i enter data in main program.*/
{
     int i;
     for(i=0;i<n;i++)
     {
                     printf("Insert name:");
                     scanf("%s",&a[i].name);
                     printf("Insert number:");
                     scanf("%d",&a[i].num);
                     printf("\n\n\n");
                     }
                     }





void printinprog(cont a[],int n)          /*This just prints data in program so we can check
                                          that program works correctly.*/
{
     int i;
     for(i=0;i<n;i++)
     {
                     printf("Name:%s   Number:%d",a[i].name,a[i].num);
                     printf("\n\n");
                     }
     FILE *text;
     text=fopen("output.txt","w");
     fprintf(text,"Name:%s\nNumber:%d\n",a[i].name,a[i].num);
     fclose(text);
     }


main()
{
      cont per[20];
      int c; 
      printf("Enter number of contacts:");            
      scanf("%d",&c);
      input(per,c);                            
      printinprog(per,c);
      system("pause");
      }

现在程序正常工作,但我在.txt文件中得到错误的数据,看起来像这样。

所以我很确定问题是在typedef结构中实际我认为数据类型存在问题因为我将它定义为cont并且实际上并不存在因此proggram没有看到它作为文本数据并且给出了错误的数据.txt文件。

1 个答案:

答案 0 :(得分:0)

问题在于

 FILE *text;
 text=fopen("output.txt","w");
 fprintf(text,"Name:%s\nNumber:%d\n",a[i].name,a[i].num);
 fclose(text);

应该在循环内部,并且它在它之外。发生的事情是,它使用i(n)的最后一个值,实际上是从随机存储器位置打印....