我面临着malloc和结构的一些困难。我想读取我的代码中显示的m_data.number_chars(这是一个整数)作为我想要分配的内存..但是当我编译我的代码并运行它时,它会粉碎..任何想法......?提前谢谢!
#include <stdio.h>
struct movies {
int number_chars;
char name;
int made_year;
float money;
};
struct movies m_data;
int main()
{
scanf("%d",&m_data.number_chars);
m_data.name=malloc(m_data.number_chars);
gets(m_data.name);
printf("%s",m_data.name);
}
答案 0 :(得分:0)
调用scanf
时,您需要传递变量的地址以保存结果(使用&符号&
)。这肯定会在那里造成严重的记忆问题。
此外,name
的类型为char
。 char
不是指针。因此,您无法将malloc()
的结果分配给name
。
你需要一个指针类型。
此外,&#34;粉碎&#34;不是对出了什么问题的技术描述。如果你能更好地表达自己的情况,你可能会更进一步。
答案 1 :(得分:0)
尝试:
#include <stdio.h>
#include <stdlib.h>
struct movies {
int number_chars;
char *name;
int made_year;
float money;
};
struct movies m_data;
int main()
{
scanf("%d",&m_data.number_chars);
m_data.name=malloc(m_data.number_chars);
gets(m_data.name);
printf("%s",m_data.name);
free(m_data.name)
}
答案 2 :(得分:0)
那么你应该将scanf
传递给malloc
- 更具体地说是将存储输入的变量的地址。你没那样做。
没有返回值检查您之前没有使用#include <stdio.h>
#include <stdlib.h>
struct movies {
int number_chars;
char* name;
int made_year;
float money;
};
struct movies m_data;
int main(void)
{
if( scanf("%d",&m_data.number_chars)!= 1){
fprintf(stderr, "%s\n", "Error in input");
exit(EXIT_FAILURE);
}
getchar();
if(m_data.number_chars <= 0){
fprintf(stderr, "%s\n", "Error in number of character count");
exit(EXIT_FAILURE);
}
m_data.name = malloc(m_data.number_chars+1);
if(!m_data.name){
perror("Malloc error");
exit(EXIT_FAILURE);
}
if(fgets(m_data.name,m_data.number_chars+1,stdin)){
printf("[%s]\n",m_data.name);
}
return 0;
}
的标准功能和事件。
if (myProp === "") {
$.each(response,
function(index, item) {
myDDL.append(new Option(item.TextValue, item.valId).attr('disabled', true));
});
}