c语言-C语言里想要用函数创建一个新的字符数组,并使其等于原有的一个字符数组该怎么做?

问题描述

C语言里想要用函数创建一个新的字符数组,并使其等于原有的一个字符数组该怎么做?

#include
#include
#include
char map[4][4];
char creat()//创建一个新的字符数组
{
char *maze=(char
)malloc(sizeof(map));
return maze;
}
void main()
{
int i,j;
for(i=0;i<4;i++)
{
gets(map[i]);
}
char *maze=creat();
strcpy(maze,map);//试图将输入的map数组赋值给新创建的字符数组
for(i=0;i<4;i++)
for(j=0;j<4;j++)
{printf("%c",maze[i][j]);printf("n");}
}

这样写的话strcpy函数会报错。然后我就不知道怎么办了。

解决方案

这不是很多笔试题有的吗?内存泄露!

解决方案二:

改:char *maze=creat();
成:char *maze = (char)malloc(strlen(map)+1);

时间: 2024-10-02 05:30:03

c语言-C语言里想要用函数创建一个新的字符数组,并使其等于原有的一个字符数组该怎么做?的相关文章

方法-C语言头文件里放声明,其实现放哪?

问题描述 C语言头文件里放声明,其实现放哪? 我写了一个头文件a.h,实现在a.c中,主文件中#include "a.h",报错...我想知道头文件的声明和定义的规范使用方法..谢谢.. 解决方案 首先搞清楚,include和头文件的关系. include的作用是将这个文件的内容插入到include所在的位置,从而构成一个完整的源代码文件被编译. 那么头文件是什么,实际上头文件里可以放任何东西,源代码文件也可以放任何东西,include也可以随意包含. 只是看这三者放在一起,经过替换,

c语言-C语言编程,我想用16位表示64种状态,

问题描述 C语言编程,我想用16位表示64种状态, 关于C语言中,我想用16位表示64种状态,比如用1表示LED点亮,0表示LED熄灭,比如用1000 0000 0000 0000表示1#LED灯亮起(因为1用16进制表示为0001),2000 0000 0000 0000表示第2LED灯亮起(因为2用16进制表示为0010),F000 0000 0000 0000 表示1.2,3.4LED灯亮起(因为F用16进制表示为1111),又如0F00 0000 0000 0000表示5.6.7.8LE

c语言-C语言对字符串提取想要的内容。如下:(麻烦各位了)

问题描述 C语言对字符串提取想要的内容.如下:(麻烦各位了) s1s2s3成功怎么把每个s1,s2,s3的内容放到buf1buf2buf3数组中.如果后台没有下发s1那么只存放s2,s3的内容.怎么破?sscanf破不了.. 解决方案 http://blog.csdn.net/jjyyhema/article/details/5279915http://blog.csdn.net/b_h_l/article/details/41659327 解决方案二: 需求还不是特别明了,语法方面就不必说了,

web脚本语言开发-web脚本语言怎样修改我想要的?SwitchySharp插件批量添加情景模式

问题描述 web脚本语言怎样修改我想要的?SwitchySharp插件批量添加情景模式 我有段在什么浏览器控制台运行的脚本语言,它运行的目的是批量添加 很多 ip地址和端口,现在我想把端口后面的名字也加上去,该怎么修改代码? (function(Settings){var p = Settings.getObject('profiles'); var t = p['template']; window.prompt().split(';').forEach(function(proxy) { p

c#-C#语言文本框里怎么计算文本文件中所有学生成绩的平均数?有没有简单的办法?

问题描述 C#语言文本框里怎么计算文本文件中所有学生成绩的平均数?有没有简单的办法? C#语言文本框里怎么计算文本文件中所有学生成绩的平均数?有没有简单的办法? 解决方案 文本文件的格式不知道,假设是回车分行,每行一个成绩,可以这么算 int avg = File.ReadAllLines("1.txt").Select(x => int.Parse(x)).Average(); 解决方案二: int avg = File.ReadAllLines("1.txt&quo

二进制-C语言for循环里没有循环体,空白语句有什么作用

问题描述 C语言for循环里没有循环体,空白语句有什么作用 程序是输入一个二进制数,然后求这个二进制数的补码. 第一个for中并没有循环体,注释掉以后无法运行. 另外这个程序是怎么做到当末位为1时,末位加1等于0,并且向前进一位的?而不是末位加1等于2? 解决方案 C语言 for循环8.从零开始学习C语言--while循环语句C语言基础练习:在Xcode中练习的for循环语句 解决方案二: 第一个for循环是找到这个二进制数第一个1的位置,如输入0001010,求得i=3. 解决方案三: 第一个

c语言-C语言数组作为参数传入子函数

问题描述 C语言数组作为参数传入子函数 对不起,可能我没表达清楚,我想问,数组作为参数传入子函数为什么不是作为形式参数传入,请你看程序运行结果,如果数组作为形式参数传入子函数,那么形式参数的值并不会影响原来main函数中的值,但是实际上,main函数中数组原来的值已经被修改了,这是因为数组传入的是地址(指针),我的问题就在这里,传入的是指针为什么不是用完就扔的形式参数. 这与c语言的设计有关是吗?内部有什么机制吗? 解决方案 首先提一下std C 调用约定,参数的传递使用栈. 在传递时首先将参数

c语言-C语言字符串数组定义问题

问题描述 C语言字符串数组定义问题 #include int main() { char *ptr[10]; 为什么这样运行时会出错? gets(ptr[0]); } #include int main() { char ptr[10][20]; 而这样运行时则没有问题? gets(ptr[0]); } char *p[10] 与 char p[10][20] 之间有什么不同? 还是说在这里是gets()函数用错了? 万分感谢! 解决方案 哥们,你的第一个定义的是数组指针,第二定义的是一个二维数

c语言-C语言实现学生宿舍管理系统

问题描述 C语言实现学生宿舍管理系统 对于C语言还有点基础,.NET和Java不太懂. 假期培训了iOS开发,才一个多月,本想用OC来做毕业设计的,现在要做开题报告了,不知道怎么写.所以决定用C来编写程序. 问题1:C语言怎么连接数据库,或是保证下次运行程序内容不会重置. 问题2:怎么用C语言构建图形界面(太难的话,就不用给我讲了) 解决方案 C语言过于原始和简陋,要学的东西很多.比如说,你用.net画画鼠标,界面就做好了.做网页也是一样.但是C语言必须手工去调用api创建界面. 好歹也得用下C