问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

代码找错

发布网友 发布时间:2022-05-01 19:40

我来回答

2个回答

热心网友 时间:2022-06-30 14:42

将main()中的String指针传递给函数void inputString(String * s,int n) 时,只是传递了指针的一个拷贝,函数中分配的内存,是对s的拷贝指针进行的,并没有对主函数中的指针分配内存,可以用返回值,或者双重指针来给String s分配内存
#include<stdio.h>
#include<conio.h>
#include<malloc.h>
#include <stdlib.h>
/*
先输入字符串的个数n,再输入n个字符串(每个字符串小于8个字符),再输出各个字符串。
*/
/****************************************************************************/
typedef struct {
char * name;
} String ;

/******************************************************************************/
void inputNumberString(int * n); /*输入字符串的个数n*/

String* inputString(String * s,int n); /*输入n个字符串*/

void display(String * s,int n); /*输出各个字符串*/
/*****************************************************************************/
int main() {
int n;

String * s=NULL;

inputNumberString(&n); /*输入字符串的个数n*/

s=inputString(s,n); /*输入n个字符串*/

display(s,n); /*输出各个字符串*/

getch();

return 0;
}
/*******************************************************************************/
void inputNumberString(int * n) {
printf("Please input the number of the string:\n");
scanf("%d",n);
}

/********************************************************************************/
String* inputString(String * s,int n) {

int i;

if((s=(String *)malloc(n*sizeof(String)))==NULL) {
printf("Error:No enough memory for String\n");
getch();
exit(1);
}
for(i=0;i<n;i++) {
if((s[i].name=(char *)malloc(8*sizeof(char)))==NULL) {
printf("Error:No enough memory for string[%d].name\n",i);
getch();
exit(1);
}
scanf("%s",s[i].name);
}
return s;
}
/*****************************************************************************************/

/************************************************************************************/
void display(String * s,int n) {
int i; /*循环计数器*/
for(i=0;i<n;i++) {
printf("%d,%s:\n",i+1,s[i].name);
}
}

热心网友 时间:2022-06-30 14:42

display(s,n);一句中s = NULL故发生了访问违例。
因为void inputString(String * s,int n) 接收参数s是按值传参数的,故返回后s还是NULL
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
联想s410和s420有什么不同 笔记本电脑买一个固态硬盘的话,什么样的以后不用了,可以换给别的电脑... 小米4下载哪个ROOt软件能够成功破解??要手机版的 小米4怎么root开权限 昨天刚买的小米4 想要弄ROOT权限 但要先找出开发者选项 不知道咋整... 我腿伤残被四个人打至轻微伤…四个人只能拘留一个人吗…而且把我老婆... 四个人打我一人我三个轻微伤怎么处理 四人寻衅滋事行凶致人轻微伤三处和轻伤三处对四人怎样定刑 最爱的卜什么意思? 怎样机智回答想我了吗? ---[ 显卡(Display)详细信息 ]--- 显卡(Display): tc怎么添加树形结构 以前没有做过酸笋,腌制的酸笋有股臭味,汤也变成黄色的,正常还是不 自制酸笋不酸怎么办? C++二级上机改错题 为什么不需要using std::cout也能编译的出来呢?? tc ds如何将手机与电脑接入相同的局域网 tc中找不到display.h怎么办??? 中国比较好的专科大学 和外国人聊天 与外国人聊天的话题 和老外聊天常要用到的句子,话题有哪些? 华为AL00 Al600有咩功能?? 黄花菜炒牛肉的做法 牛肉的做法大全有哪些? 说微信账号过期了是不是就是被盗了? 说微信账号过期了是不是就是被盗了? 如何用Dreamweaver写网站登录注册页并连接到数据库 考一级建造师需要哪些条件 一级建造师公路方向难考吗? 腌制酸笋闻到臭味正常吗 tc2.0 的用法?? 酸笋怎么才能更臭酸笋怎么才能更臭 C语言运行无结果??????急.......急!!!!! 做螺丝粉酸笋的酸臭味儿重一点好还是轻一点好 “人工”组成一个字,怎么读? 人工石念什么 人工是啥字 金字旁人工念什么字 用ASP做个用户注册并可登陆的连接数据库的教程。哪有,只要这个! 搜狗输入法经常不见(皮肤突然消失,打出来是英文,按SHIFT没用) 搜狗拼音词库突然丢失,皮肤也没有了。是什么原因 放很久的油桶能种菜吗?闻起有种坏了的味道 搜狗拼音输入法右下角的皮肤没了 油桶有油能种植蔬菜吗有影响吗 搜狗输入法的皮肤图标没了,无论更换哪种皮肤,都只是出线最普通的输入法显示图标~怎么回事啊! 搜狗拼音是不是死了 皮肤全部消失了 水的中国象形文字和指事文字,以及中国象形文字与其甲骨文的区别。 水的甲骨文怎么写? 水是象形字吗
  • 焦点

最新推荐

猜你喜欢

热门推荐