strcpy会把循环变量重置,怎么回事?
[code=C/C++]void test(){
char tmp[5];
char *times[5]={ "20:00 ", "09:40 ", "13:05 ", "24:00 ", "00:00 "};
float f_times[5]={0};
for(a=0;a <5;i++)
{
strcpy(tmp,times[i]);
printf( "%d\n ",i);
tmp[2]= '. ';
f_times[i]=atof(tmp);
}
}[/code]
为什么每次strcpy执行之后,i的值就变为0了?
环境:windows XP+gcc (TDM-2 mingw32) 4.4.1
[解决办法]
"20:00"总共是5个字符,加上结束符共6个,所以char tmp[6]才是正确的,否则变量被覆盖,结果难料。
[解决办法]
#include <Windows.h>#include <stdlib.h>#include <stdio.h>void test();int main(){ test(); system( "pause" );}void test(){ char tmp[6] = {0}; char *times[5]={ "20:00" , "09:40" , "13:05" , "24:00" , "00:00" }; float f_times[5]={0}; for( int a = 0 ; a < 5 ; a++ ) { strcpy( tmp , times[a] ); printf( "%d\n" , a ); tmp[2] = '.'; f_times[a] = atof( tmp ); }}
[解决办法]