打开客厅微电脑机顶盒打开telnet服务看不了电视了,电视屏幕显示一个感叹号

C语言有关结构数组的一个程序为什么运行什么结果都不显示?求助~【c语言吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:531,724贴子:
C语言有关结构数组的一个程序为什么运行什么结果都不显示?求助~收藏
#include&stdio.h&#include&string.h&struct Student{char name[20]; char major[20]; int E int M int C;}stu[5]={{&zhang&,&通信&,98,88,79,0},{&li&,&网络&,67,78,89,0},{&lin&,&物联网&,93,68,85,0},{&sun&,&网络&,98,93,95,0},{&min&,&通信&,88,79,69,0}};void main(){struct Student *p=struct Student count(struct Student stu[5]);count(p); }struct Student count (struct Student stu[5]){int ave[2];int num1[2];int grades[2];
int socre[5];for(i=0;i&5;i++){stu[i].score=stu[i].English+stu[i].Maths+stu[i].C;if(strcmp(stu[i].major,&通信&)==0)
{num1[0]++;grades[0]=grades[0]+stu[i].}else if
(strcmp(stu[i].major,&网络&)==0)
{num1[1]++;grades[1]=grades[1]+stu[i].}else if (strcmp(stu[i].major,&物联网&)==0)
{num1[2]++;grades[2]=grades[2]+stu[i].}ave[i]=grades[i]/num1[i];}
printf(&通信专业情况如下:\n&);printf(&专业人数:%d\t专业总成绩:%d\t专业平均分:%d\n&,num1[0],grades[0],ave[0]);
printf(&网络专业情况如下:\n&);printf(&专业人数:%d\t专业总成绩:%d\t专业平均分:%d\n&,num1[1],grades[1],ave[1]);
printf(&物联网专业情况如下:\n&);printf(&专业人数:%d\t专业总成绩:%d\t专业平均分:%d\n&,num1[2],grades[2],ave[2]);
printf(&\n学生成绩输出如下:\n&);for(i=0;i&5;i++)printf(&姓名:%5s\t专业:%5s\t英语成绩:%d\t数学成绩:%d\tC语言成绩:%d\t总成绩:%d\n&,stu[i].name,stu[i].major,stu[i].English,stu[i].Maths,stu[i].C,stu[i].score);
}显示不出错误,但是结果显示不出来,是为啥呢- -
AutoTDS-V1型全自动热解吸仪是一款20位常温二次全自动热解吸仪,气路采....
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或C语言利用字符串数组读取字符串的误区
最近碰到一个很奇怪的问题,想想关了电脑也要再开机记录下来
主要代码如下:int main()
char* key[2];
scanf("%s", &key[0]);
scanf("%s", &key[1]);
printf("%s
\n", &key[0]);
要从控制台中读取输入的字符串,定义了一个char*类型的数组,结果出问题了。
who 输出:whoswho
当输入: wwwwww
dddddd 输出:wwwwdddddd
有多纠结我就不说了,和同学讨论了好久得出结论(可能有误)
char* 在C语言中占四个字节,因为定义的key是个数组,在声明时为它分配一块连续的内存,于是数组key的每个单元都被固定成四个字节。
对于第一种情况,whos正好占了四个字节,最后的终结符(记得是\0)越界放到了key[1]里,随后被写入key[1]内存地址的数据覆盖掉了,于是不知道key[0]到什么地方结束,一直往后读,直到遇到了key[1]的终结符,所以把key[1]一块输出了。
对于第二种情况也类似,6个w放到4个字节里放不下,只能存放前四个,后面两个越界放到了key[1]里,随后被写入key[1]内存地址的数据覆盖掉了。虽然后面的6个d也超出了范围,但是这个数组只有两个长度的大小,key[i]只是记录了首地址,并没有记录结束位置的地址,于是这6个d把为这个数组分配的8个字节内存的后面一部分内存给占用了,所以最后一个字符串完整的输出了。
假设还是定义key的长度为2,但是只读取了一个字符串,不管它长度多大,都能完整输出,因为它越界的部分没有被覆盖掉。
因此,对于这种输入的字符串大于4个字节的情况,只有输入的最后一个字符串能完整的输出。c语言把文件中数据读取并存到数组中
我的图书馆
c语言把文件中数据读取并存到数组中
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
程序代码:
//&C++读取文本到数组.cpp&:&定义控制台应用程序的入口点。&&//&&&&#include&"stdafx.h"&&&&int&readfile1D()&&{&&&&&&char&a[100];&&&&&&int&i;&&&&&&FILE&*fp&=&fopen("1.txt","r");&&&&&&if(fp&==&NULL)&&&&&&{&&&&&&&&&&printf("文件读取无效.\n");&&&&&&&&&&return&-1;&&&&&&}&&&&&&for(i&=&0;&!feof(fp);&i++)&&&&&&&&&&fscanf(fp,&"%d",&&a[i]);&&&&&&&&&&&&fclose(fp);&&&&&&&&for(i=0;&i&&&20;&i++)&&&&&&&&&&printf("%d&",&a[i]);&&&&&&printf("\n");&&&&&&&&return&0;&&}&&&&int&readfile2D()&&{&&&&&&int&a[3][5];&&&&&&int&i,j;&&&&&&FILE*&fp&=&fopen("2.txt","r");&&&&&&if(fp&==&NULL)&&&&&&{&&&&&&&&&&printf("文件无效");&&&&&&&&&&return&-1;&&&&&&}&&&&&&for(i=0;&i&3;&i++)&&&&&&{&&&&&&&&&&for(j=0;&j&5;&j++)&&&&&&&&&&{&&&&&&&&&&&&&&fscanf(fp,"%d",&a[i][j]);&&&&&&&&&&}&&&&&&&&&&//fscanf(fp,"\n");&不要也罢&&&&&&}&&&&&&&&fclose(fp);&&&&&&&&&&&&for(i=0;&i&3;&i++)&&&&&&{&&&&&&&&&&for(j=0;&j&5;&j++)&&&&&&&&&&&&&&printf("%d&",&a[i][j]);&&&&&&&&&&printf("\n");&&&&&&}&&&&&&printf("\n");&&&&&&&&return&0;&&}&&&&int&_tmain(int&argc,&_TCHAR*&argv[])&&{&&&&&&&&&&&&readfile1D();&&&&&&readfile2D();&&&&&&return&0;&&}&&
TA的最新馆藏[转]&

我要回帖

更多关于 电信机顶盒屏幕变小 的文章

 

随机推荐