我的程序没有将任何内容导出到.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文件。
答案 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)的最后一个值,实际上是从随机存储器位置打印....