【问题标题】:Cannot call a function inside a if statement无法在 if 语句中调用函数
【发布时间】:2016-10-22 10:42:39
【问题描述】:

我只是想在 if 循环中调用函数“char *get_time_clk()”。我在 PIC24F 微控制器工作。问题是当我尝试在循环微控制器重新启动时调用内部。如果我在 if 循环之外调用该函数,它的工作原理。我可以调用除此之外的其他函数。可能是什么问题?

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
 char *get_time_clk();
int main()
 { 
    init_processor();  //Initiate PIC
    Delayms(15000);
    printf("%s\n",get_time_clk());-----> **working here**
while(1)
    {
      if(http_conn)
                {
                   printf("%s\n",get_time_clk());------>**Not working**
                }
               .
               .
               .

    }
  return 0;
  }

char *get_time_clk()
  {
    int i,v=0,j=5,l=0,m=8,n=0,q=11,s=0;
    char yr[5],mm[5],dd[5],time[10],sp_chr[2]="-",date_fr[20];
    uart3str("AT+CCLK?\r");
    Delayms(500);
    int b,z=0;
    for(b=19;b<=35;b++)
     {
        cur_time[z]=gprs_buffer[b];
        z++;
     }
     cur_time[z]='\0';
     strcat(real_time,cur_time);
     for(i=0;i<=strlen(real_time);i++)
      {
        while(real_time[v]!='/')
         {
            yr[v]=real_time[v];
            v++;
         }

            while(real_time[j]!='/')
            {
                mm[l]=real_time[j];
                j++;
                l++;
            }

            while(real_time[m]!=',')
            {
                dd[n]=real_time[m];
                m++;
                n++;
            }

        }

        yr[v]='\0';
        mm[l]='\0';
        dd[n]='\0';
        time[s]='\0';
        int c,d=0,e=0;
        for(c=0;c<=strlen(real_time);c++)
        {
             c = c+11;e=c+8;
             do
                {
                    time[d] = real_time[c++];
                    d++;
                }while(c<=e);
            time[d] = '\0';
            c=200;
            c++;
        }
        snprintf( date_fr, sizeof(date_fr), "%s%s%s%s%s%s", yr, sp_chr, mm, sp_chr,dd," " );
        strcat(date_fr,time);
        return date_fr; 
        }

【问题讨论】:

  • 什么是“if循环”?
  • @paisanco http_conn 在定时器中断中定义
  • 什么是cur_timereal_time 是什么?

标签: c function if-statement while-loop char


【解决方案1】:

我重新检查了我的功能,它有一些故障。现在它的工作。 谢谢...

char * get_time_clk()
{
clear();
memset(date_fr,0,sizeof(date_fr));
uart3str("AT+CCLK?\r");
Delayms(500);
int dt=0;
for(fori=0;fori<strlen(gprs_buffer);fori++)
{
    if(gprs_buffer[fori]=='"')
    {
        fori=fori+1;
        do
            {
                dt_tm[dt]=gprs_buffer[fori];
                dt++;
            }while(gprs_buffer[++fori]!='"');
    }
}
dt_tm[dt]='\0'; //dt_tm=16/06/21,17:28:29+22

 int de=0;
 forj=0;
 do
 {
     dte[de]=dt_tm[de];
     de++;
 }while(dt_tm[++forj]!=',');
 dte[de]='\0'; //dte=16/06/21
forj=forj+1;

int tm=0;
do
{
    tme[tm]=dt_tm[forj];
    tm++;
}while(dt_tm[++forj]!='+');
tme[tm]='\0'; //tme=17:28:29

int yr=0,mn=0,dy=0,fork=0;
    for(fork=0;fork<strlen(dte);fork++) 
    {
        do
        {
            year[yr]=dte[fork];
            yr++;
        }while(dte[++fork]!='/');
        fork=fork+1;                            //Year

        do
        {
            month[mn]=dte[fork];
            mn++;
        }while(dte[++fork]!='/');
        fork=fork+1;                            //Month
        do
        {
            day[dy]=dte[fork];
            dy++;
        }while(dte[++fork]!='\0');
                                                                //Day
    }
    year[yr]='\0';
    month[mn]='\0';
    day[dy]='\0';
    snprintf( chn_date, sizeof(chn_date), "%s%s%s%s%s%s%s",appnd_yr, year, sp_chr, month, sp_chr,day," " );
    strcat(chn_date,tme);
return chn_date;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-30
    • 1970-01-01
    相关资源
    最近更新 更多