为什么这个C语言程序运行不了
解决时间 2021-02-23 02:02
- 提问者网友:爱你又怎样
- 2021-02-22 08:19
#include
#include
#define MAX_REMIND 50
#define MSG_LEN 60
int read_line(char str[],int n);
int main()
{
char reminders[MAX_REMIND][MSG_LEN+3];
char day_str[3],msg_str[MSG_LEN +1];
int day,i,j,num_remind = 0;
for(;;)
{
if(num_remind==MAX_REMIND)
{
printf("-- NO space left--\n");
break;
}
printf("Enter day and reminder:");
scanf("%d",&day);
if(day==0)
break;
sprintf(msg_str,"%2d",day);
read_line(msg_str,MSG_LEN);
for(i=0;i if(strcmp(day_str,reminders[i])<0)
break;
for(j=num_remind;j>i;j--)
strcpy(reminders[j],reminders[j-1]);
strcpy(reminders[i],day_str);
strcat(reminders[i],msg_str);
num_remind++;
}
printf("\nDay reminder\n");
for(i=0;i printf("%s\n",reminders[i]);
return 0;
}
int read_line(char str[],int n)
{
int ch ,i =0;
while(ch =getchar() != '\n')
{
if(i str[i++] = ch;
str[i] = '\0';
}
return i;
}
最佳答案
- 二级知识专家网友:空虚的心
- 2021-02-22 08:58
#include
#include
#define MAX_REMIND 50
#define MSG_LEN 60
int read_line(char str[],int n);
int main()
{
char reminders[MAX_REMIND][MSG_LEN+3]; //reminders[50][63]
char day_str[3]; //
char msg_str[MSG_LEN +1]; //msg_str[61]
int day,i,j;
int num_remind = 0;
for(;;)
{
if(num_remind==MAX_REMIND) //50=50 最外循环停止
{
printf("-- NO space left--\n");
break;
}
printf("Enter day and reminder:");
scanf("%d",&day);
if(day==0)
break; //输入0最外循环停止
sprintf(msg_str,"%2d",day); //把day的值写入msg_str
read_line(msg_str,MSG_LEN); //得到返回值i
for(i=0;i
{
if(strcmp(day_str,reminders[i])<0) // 循环不会触发
break;
}
for(j=num_remind;j>i;j--)
{
strcpy(reminders[j],reminders[j-1]); //循环不会触发
}
strcpy(reminders[i],day_str); //把day_str复制到reminders[i]中,以内之前的循环不会触发,所以day_str也没赋值
strcat(reminders[i],msg_str); //把msg_str加入到reminders[i]中 ,但是msg_str压根没有值
num_remind++;
}
printf("\nDay reminder\n");
for(i=0;i
printf("%s\n",reminders[i]);
return 0;
}
int read_line(char str[],int n)
{
int ch ,i =0;
while(ch =getchar() != '\n')
{
if(i
str[i++] = ch;
str[i] = '\0'; //while循环本是给str赋值的,但是这个函数返回的是i的值,这个赋值等于没用
}
return i;
}因为我不知道你的代码是干嘛的。我只能根据我自己理解的来说了。上面的代码我把它整理了下,和你的代码是一个意思。我把代码有问题的地方注释出来了,你自己看看吧。
全部回答
- 1楼网友:el孤酒el
- 2021-02-22 11:33
#include
#define len 20
void main()
{
int a[len];
int i,j,tmp;
for(i=0;ia[j+1])
{
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
}
printf("从小到大排列后数组为:\n");
for(i=0;i
- 2楼网友:凊搽蒗囝
- 2021-02-22 10:37
首先你要告诉我们你的函数实现功能是什么 然后才好看程序啊 。
- 3楼网友:凊搽蒗囝
- 2021-02-22 10:02
for(j=num_remind;j>i;j--)
strcpy(reminders[j],reminders[j-1]);
strcpy(reminders[i],day_str);
strcat(reminders[i],msg_str);
num_remind++;
这一段你是不是少了大括号?
- 4楼网友:酒空人散
- 2021-02-22 09:13
代码很多问题,很多大括号都没有,变量赋值有误,导致循环都循环不了,自己找个编译环境,到编译环境跟踪下都有了
我要举报