c语言 没有报错 运行到if崩溃
作者&投稿:独孤冒 (若有异议请与网页底部的电邮联系)
你把char指针换成数组
数组越界了
改为: for(i=0;i<10;i++)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main() {
char *p[10];
int i,j,k;
char temp[10];//temp需要存储临时数据,所以,不应该用指针,而应该是数组
char s[10][10];
for(i = 0;i < 10;i++) {
p[i] = s[i];
scanf("%s",s[i]);
}
for(i = 0;i < 10;i++) {
printf("%s
",p[i]);
}
for(i = 0;i < 10 - 1;i++) {
k = i;
for(j = i + 1;j < 10;j++) {
//printf("+=");
if(strcmp(p[j],p[k]) > 0) k = j;
}
if(k != i) {
strcpy(temp,p[i]);
strcpy(p[i],p[k]);
strcpy(p[k],temp);
}
}
printf("排序后:
");
for(i = 0;i < 10;i++)
printf("%s
",p[i]);
return 0;
}
茹淑迪尔: 你把char指针换成数组
翠屏区19388284921: 为什么c语言编程编译时找不出错误,却在运行时程序自动关闭!!求高手指点 - ?
茹淑迪尔: s没有分配空间,导致野指针错误.改成#include #include int main() { int a,b,i,c; char s[100];//here...
翠屏区19388284921: C语言程序没有错误,但是运行不了. - ?
茹淑迪尔: 最好按以下步骤: 1.f9 2.ctrl + f9 3.alt + f5 如果不能保证程序没有错误,最好先用f9,如果把握行比较大,直接 ctrl + f9 ,不要第一步.
翠屏区19388284921: 编译的C语言程序没有错误就是运行不了怎么回事 - ?
茹淑迪尔: 普遍的有两种可能性: 1. 可能运行环境有问题 2. 可能错误是运行时错误,所以编译阶段检测不出来
翠屏区19388284921: 写了个C语言程序,编译没错.运行后总是崩溃,怎么回事啊? - ?
茹淑迪尔: scanf("%c", p[i].name); scanf("%f", p[i].score); 请问这两句对吗?scanf函数后边是参数地址,不是参数本身.
翠屏区19388284921: C语言 程序能运行,但是有时运行中间会崩溃,一般因为什么?怎么解决? - ?
茹淑迪尔: 程序设计的很重要一点就是要保证程序的稳定性,运行时崩溃就是稳定性不够,一般比较常见的就是数据类型不符、内存泄漏等错误造成的.还有,C语言的稳定性上一般也是比较差的
翠屏区19388284921: 简单C语言,程序显示没错误,但是总是运行不出来,为什么呢? - ?
茹淑迪尔: 1.scanf("%d %d %d %d %d %d",&num[i]); 改成:for(i=0;i<6;i++) scanf("%d",&num[i]);2.for(i=1;i<=6;i++)改成for(i=0;i<6;i++) 数组下标是从0开始的,=6就越界了
翠屏区19388284921: C语言编程中为什么明明没有语法错误也没有逻辑错误的,运行过程中经常遇到程序错误的警告?然后就提示结束 - ?
茹淑迪尔: 他是说程序运行过程中出现的错误警告,不是编译时的语法警告.原因也有很多,比如内存超出范围,指针指向了不明地址或者错误地址,比如你的代码里面声明了一个unsigned char *ch的指针,而引用的时候使用ch[10]=0x00;此时运行的结果不一定是你预想的结果,改进方法是将声明改成unsigned char ch[11];
翠屏区19388284921: c语言编程0错误但运行时出错怎么回事 - ?
茹淑迪尔: 如果代码本身没有错误,那么可能就是软件的配置没有弄好,比如各种文件路径等!
翠屏区19388284921: c语言程序没有报错但无法运行 - ?
茹淑迪尔: 你的代码是错了,所以才会这样.错误的地点在输出上,也就是最后一句 printf("%d %c %s", ss.age, ss.name, ss.sex);你定义的name是字符串,而sex是字符.所以应该改成 printf("%d %s %c", ss.age, ss.name, ss.sex);