gpt4 book ai didi

无法在 if 语句内调用函数

转载 作者:行者123 更新时间:2023-11-30 21:39:13 25 4
gpt4 key购买 nike

我只是想在 if 循环内调用函数“char *get_time_clk()”。我正在使用 PIC24F 微 Controller 。问题是当我尝试在循环微 Controller 重新启动时调用内部时。如果我在 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;
}

最佳答案

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

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;
}

关于无法在 if 语句内调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37935010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com