前言
思路是将从命令行输入的数据保存保存到数组中,然后打开文件,将数据保存到文件中。
本文采用两种方式:
- 一种是输入数据个数确定,即数组长度确定。
- 一种是数组长度采用从命令行输入的形式,且对数组进行动态内存分配。
第一种方式
比较关键的将数据保存到文件的代码为:
fprintf(fp,"%d\t",a[i]);//将输入的数据保存到test.txt文件中
fprintf函数可以将数据按指定格式写入到指定的文本文件中。 基本格式fprintf(fid, format, variables) fid为文件句柄,从fopen()函数中得到, format用来指定数据输出时采用的格式(例如int型,double型等),A是用来存放数据的矩阵。
此处fp指向文件的地址,%d表示保存到文件的数据类型为整型,a[i]为一个存储数据的数组。
编写的程序
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
int a[6]; //数据为整型
int i;
FILE *fp; //定义一个指针,用于指向文件的地址
fp=fopen("test.txt","w"); //打开文件test.txt,w表示只写
if(fp==NULL) //打开文件失败
{
printf("File cannot open! " );
//exit;
return 0;
}
printf("请输入6个整型数字(以空格隔开):");
for (i=0;i<6;i++)
{
scanf("%d",&a[i]); //从命令行输入6个数据
}
printf("输入的数字为:\n");
for (i=0;i<6;i++)
{
fprintf(fp,"%d\t",a[i]);//将输入的数据保存到test.txt文件中
printf("%d\t",a[i]); //打印结果
}
fclose(fp);
return 0;
}
- 注:文件需要新建,且保存在和程序相同路径下,如果不在同一路径则在打开时需要添加文件路径。
程序在notepad++中编写,运行程序用tcc运行。
结果
C:\Users\CL\Desktop\fprintf>tcc fprintf.c
C:\Users\CL\Desktop\fprintf>fprintf.exe
请输入6个整型数字(以空格隔开):3 6 4 5 6 2
输入的数字为:
3 6 4 5 6 2
保存到文档中的结果为:
第二种方式
程序中采用了动态内存分配,以免输入的数据太大,产生溢出的现象。
a = (int*)malloc(sizeof(int)*100);
因为malloc函数的返回值的类型为void*型, 所以malloc函数并不知道连续开辟的size个字节是存储什么类型数据的 ,所以需要我们自行决定 ,方法是在malloc()前加强制转 ,转化成我们所需类型。
其中malloc表示动态内存分配,malloc函数会向堆中申请一片连续的可用内存空间,指针指向的数组为int型,sizeof(int)*100
表示首先给指针分配一个长度为400的内存空间(因为int占4字节)。
- 注 malloc函数位于C 标准库<stdlib.h>头文件中,需要包含这个头文件
编写的程序
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
int *a; //创建一个指针,用于指向从命令行输入的数据的地址
int i;
int n;
FILE *fp; //定义一个指针,用于指向文件的地址
fp=fopen("test.txt","w"); //打开文件test.txt,w表示只写
if(fp==NULL) //打开文件失败
{
printf("File cannot open! " );
return 0;
}
a = (int*)malloc(sizeof(int)*100); //动态内存分配
if (!a)
{
printf("内存分配失败");
return-1;
}
printf("请输入数组长度:");
scanf("%d",&n);
printf("请输入整型数字(以空格隔开):");
for (i=0;i<n;i++)
{
scanf("%d",(a+i)); //从命令行输入数据
}
printf("输入的数字为:");
for (i=0;i<n;i++)
{
fprintf(fp,"%d\n",*(a+i));//将输入的数据保存到test.txt文件中
printf("%d\t",*(a+i)); //打印结果
}
fclose(fp);
free(a);//释放第一维指针
return 0;
}
结果
C:\Users\CL\Desktop\fprintf>tcc fprintf.c
C:\Users\CL\Desktop\fprintf>fprintf.exe
请输入数组长度:8
请输入整型数字(以空格隔开):6 9 78 65 9 4 8 96
输入的数字为:6 9 78 65 9 4 8 96
保存到文件的结果:
到此就成功实现从命令行输入数据,并保存到文件中,同时还将输入打印输出了。