#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<time.h>
#include<string.h>
void run(int argc, char* argv[]);
int judgeone(char b[]);
int judgetwo(char c[]);
void zhixing(int number, char filename[]);
int main(int argc, char* argv[])
{
run(argc, argv);
return 0;
}
void run(int argc, char* argv[]) {
int number; char filename[100];
if (argc == 1) //不输入命令行参数的情况
{
strcpy(filename, "output.txt");
printf("Please input record number:\n");
if (scanf("%d", &number) == 1) {
zhixing(number, filename);
}
else {
printf("input wrong!");
}
}
else if (argc == 3) //输入2个命令行参数的情况
{
if (judgeone(argv[1]) == 1) {
number = *argv[1] - '0';
if (judgetwo(argv[2]) == 1) {
strcpy(filename, argv[2]);
zhixing(number, filename);
}
}
}
else //输入一个或三个及以上命令行参数的情况
{
printf("Too many input parameters\n");
}
}
int judgeone(char b[])
{ //判断argv[1]是不是int型,或全是数字
int i;
int m = strlen(b);
for (i = 0; i < m; i++) {
if (b[i] >= '0' && b[i] <= '9') continue;
else {
return 0;
}
}return 1;
}
int judgetwo(char c[]) //判断用户输入的文件名是否合法
{
int len = strlen(c);
if (len < 4)return 0;
else {
char* p = &c[len - 4];
if (strcmp(p, ".txt") != 0) return 0;
else return 1;
}
}
void zhixing(int number, char filename[])
{
int i, j;
int** a= (int**)malloc((sizeof(int*))* number); //申请number行动态内存分配空间
if (a == NULL) {
printf("error!");
}
else {
for (i = 0; i < number; i++)
{
if ((a[i] = (int*)malloc((sizeof(int)) * 3)) == NULL) //申请3列动态内存分配空间
{
printf("error!");
}
}
srand(time(NULL));
for (i = 0; i < number; i++) { //产生随机数并将生成的随机数存入数组中
for (j = 0; j < 3; j++)
{
a[i][j] = rand() % 51;
if (j != 2) printf("%d,", a[i][j]);
else printf("%d", a[i][j]);
}printf("\n");
}
FILE* fp;
if ((fp = fopen(filename, "w")) == NULL)
{
printf("can not creat the file\n");
exit(0);
} //建立文件指针,将文件指针指向.txt文件
fprintf(fp, "%d\n", number); //将条数参数打印到文件中
for (int i = 0; i < number; i++)
{
for (int j = 0; j < 3; j++)
{
if (j != 2)
fprintf(fp, "%d,", a[i][j]); //将int型数字打印到文件中
else
fprintf(fp, "%d", a[i][j]); //将int型数字打印到文件中
}
fprintf(fp, "\n");
}
fclose(fp); //关闭文件
for (i = 0; i < number; i++)
{
free(a[i]); //逐个释放指针内存
}
free(a); //释放指向指针的二级指针内存
}
}
请问图片中的问题怎么处理呢
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 五一编程 2022-02-24 13:17关注
#include<stdio.h> #include<stdlib.h> #include<malloc.h> #include<time.h> #include<string.h> void run(int argc, char* argv[]); int judgeone(char b[]); int judgetwo(char c[]); void zhixing(int number, char filename[]); int main(int argc, char* argv[]) { run(argc, argv); return 0; } void run(int argc, char* argv[]) { int number; char filename[100]; if (argc == 1) //不输入命令行参数的情况 { strcpy(filename, "output.txt"); printf("Please input record number:\n"); if (scanf("%d", &number) == 1) { zhixing(number, filename); } else { printf("input wrong!"); } } else if (argc == 3) //输入2个命令行参数的情况 { if (judgeone(argv[1]) == 1) { number = *argv[1] - '0'; if (judgetwo(argv[2]) == 1) { strcpy(filename, argv[2]); zhixing(number, filename); } } } else //输入一个或三个及以上命令行参数的情况 { printf("Too many input parameters\n"); } } int judgeone(char b[]) { //判断argv[1]是不是int型,或全是数字 int i; int m = strlen(b); for (i = 0; i < m; i++) { if (b[i] >= '0' && b[i] <= '9') continue; else { return 0; } }return 1; } int judgetwo(char c[]) //判断用户输入的文件名是否合法 { int len = strlen(c); if (len < 4)return 0; else { char* p = &c[len - 4]; if (strcmp(p, ".txt") != 0) return 0; else return 1; } } void zhixing(int number, char filename[]) { int i, j; int** a= (int**)malloc((sizeof(int*))* number); //申请number行动态内存分配空间 if (a == NULL) { printf("error!"); } else { for (i = 0; i < number; i++) { if ((a[i] = (int*)malloc((sizeof(int)) * 3)) == NULL) //申请3列动态内存分配空间 { printf("error!"); } } srand(time(NULL)); for (i = 0; i < number; i++) { //产生随机数并将生成的随机数存入数组中 for (j = 0; j < 3; j++) { a[i][j] = rand() % 51; if (j != 2) printf("%d,", a[i][j]); else printf("%d", a[i][j]); }printf("\n"); } FILE* fp; if ((fp = fopen(filename, "w")) == NULL) { printf("can not creat the file\n"); exit(0); } //建立文件指针,将文件指针指向.txt文件 fprintf(fp, "%d\n", number); //将条数参数打印到文件中 for (int i = 0; i < number; i++) { for (int j = 0; j < 3; j++) { if (j != 2) fprintf(fp, "%d,", a[i][j]); //将int型数字打印到文件中 else fprintf(fp, "%d", a[i][j]); //将int型数字打印到文件中 } fprintf(fp, "\n"); } fclose(fp); //关闭文件 for (i = 0; i < number; i++) { free(a[i]); //逐个释放指针内存 } free(a); //释放指向指针的二级指针内存 } }
我试了下没有问题
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
- ¥15 CSAPPattacklab
- ¥15 一直显示正在等待HID—ISP
- ¥15 Python turtle 画图
- ¥15 关于大棚监测的pcb板设计
- ¥15 stm32开发clion时遇到的编译问题
- ¥15 lna设计 源简并电感型共源放大器
- ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
- ¥15 Vue3地图和异步函数使用
- ¥15 C++ yoloV5改写遇到的问题