c语言从命令行输入数据,并保存到文件中

前言

思路是将从命令行输入的数据保存保存到数组中,然后打开文件,将数据保存到文件中。
本文采用两种方式:

  • 一种是输入数据个数确定,即数组长度确定。
  • 一种是数组长度采用从命令行输入的形式,且对数组进行动态内存分配。

第一种方式

比较关键的将数据保存到文件的代码为:

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

保存到文件的结果:
在这里插入图片描述
到此就成功实现从命令行输入数据,并保存到文件中,同时还将输入打印输出了。

  • 18
    点赞
  • 140
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要遍历C语言的函数并将它们提取到文本文件,您可以使用以下步骤: 1. 打开C源代码文件并读取其内容。 2. 使用正则表达式或其他字符串处理技术,找到函数定义的行。可以使用以下正则表达式来查找函数定义: ``` ^\s*(static\s+)?[a-zA-Z_*]+\s+[a-zA-Z_]+\s*\([^)]*\)\s*\{ ``` 这个正则表达式可以匹配以零个或多个空格开头的函数定义行。函数定义以返回类型和函数名开始,后跟括号的参数列表,并以左大括号结束。 3. 从每个匹配的行提取函数名称,并将其添加到文本文件。您可以使用以下正则表达式来提取函数名称: ``` [a-zA-Z_]+\s*\( ``` 这个正则表达式可以匹配以字母或下划线开始的函数名称,后跟零个或多个空格和左括号。 4. 关闭源代码文件文本文件。 下面是一个使用C语言编写的示例程序,用于实现上述步骤: ``` #include <stdio.h> #include <stdlib.h> #include <string.h> #include <regex.h> #define MAX_LINE_LENGTH 1024 int main(int argc, char *argv[]) { char *input_file_path, *output_file_path; FILE *input_file, *output_file; char line[MAX_LINE_LENGTH]; regex_t regex; regmatch_t matches[1]; int ret; if (argc < 3) { printf("Usage: %s input_file output_file\n", argv[0]); exit(EXIT_FAILURE); } input_file_path = argv[1]; output_file_path = argv[2]; input_file = fopen(input_file_path, "r"); if (input_file == NULL) { printf("Failed to open input file: %s\n", input_file_path); exit(EXIT_FAILURE); } output_file = fopen(output_file_path, "w"); if (output_file == NULL) { printf("Failed to open output file: %s\n", output_file_path); exit(EXIT_FAILURE); } ret = regcomp(&regex, "^\\s*(static\\s+)?[a-zA-Z_*]+\\s+[a-zA-Z_]+\\s*\\([^)]*\\)\\s*\\{", REG_EXTENDED); if (ret != 0) { printf("Failed to compile regex\n"); exit(EXIT_FAILURE); } while (fgets(line, MAX_LINE_LENGTH, input_file) != NULL) { ret = regexec(&regex, line, 1, matches, 0); if (ret == 0) { char *function_name = strstr(line, "("); if (function_name != NULL) { function_name[0] = '\0'; fprintf(output_file, "%s\n", &line[matches[0].rm_so]); } } } regfree(&regex); fclose(input_file); fclose(output_file); return 0; } ``` 这个程序将从命令行参数读取输入和输出文件的路径,并将函数名称写入输出文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值