大众信息网

为什么这个C语言程序运行不了

答案:5  mip版
解决时间 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
代码很多问题,很多大括号都没有,变量赋值有误,导致循环都循环不了,自己找个编译环境,到编译环境跟踪下都有了
我要举报
如以上问答内容为低俗/色情/暴力/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
点此我要举报以上问答信息
推荐资讯