UCOS_TI_LM3S_Keil
 全部 结构体 文件 函数 变量 类型定义 宏定义 
lib_str.h 文件参考
#include <cpu.h>
#include <lib_def.h>
#include <lib_ascii.h>
#include <app_cfg.h>
#include <stdlib.h>
#include <ctype.h>
#include <errno.h>
#include <limits.h>
#include <stdio.h>
lib_str.h 的引用(Include)关系图:
此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

宏定义

#define LIB_STR_EXT   extern
 
#define Str_FmtPrint   snprintf
 
#define Str_FmtScan   sscanf
 
#define Str_IsPrint(a)   ASCII_IsPrint(a)
 
#define Str_ToLong(a, b, c)   Str_ParseNbr_Int32S((CPU_CHAR *)(a), (CPU_CHAR **)(b), (CPU_INT08U)(c))
 

函数

CPU_SIZE_T Str_Len (CPU_CHAR *pstr)
 
CPU_SIZE_T Str_Len_N (CPU_CHAR *pstr, CPU_SIZE_T len_max)
 
CPU_CHARStr_Copy (CPU_CHAR *pdest, CPU_CHAR *psrc)
 
CPU_CHARStr_Copy_N (CPU_CHAR *pdest, CPU_CHAR *psrc, CPU_SIZE_T len_max)
 
CPU_CHARStr_Cat (CPU_CHAR *pdest, CPU_CHAR *pstr_cat)
 
CPU_CHARStr_Cat_N (CPU_CHAR *pdest, CPU_CHAR *pstr_cat, CPU_SIZE_T len_max)
 
CPU_INT16S Str_Cmp (CPU_CHAR *p1_str, CPU_CHAR *p2_str)
 
CPU_INT16S Str_Cmp_N (CPU_CHAR *p1_str, CPU_CHAR *p2_str, CPU_SIZE_T len_max)
 
CPU_INT16S Str_CmpIgnoreCase (CPU_CHAR *p1_str, CPU_CHAR *p2_str)
 
CPU_INT16S Str_CmpIgnoreCase_N (CPU_CHAR *p1_str, CPU_CHAR *p2_str, CPU_SIZE_T len_max)
 
CPU_CHARStr_Char (CPU_CHAR *pstr, CPU_CHAR srch_char)
 
CPU_CHARStr_Char_N (CPU_CHAR *pstr, CPU_SIZE_T len_max, CPU_CHAR srch_char)
 
CPU_CHARStr_Char_Last (CPU_CHAR *pstr, CPU_CHAR srch_char)
 
CPU_CHARStr_Str (CPU_CHAR *pstr, CPU_CHAR *psrch_str)
 
CPU_CHARStr_FmtNbr_Int32U (CPU_INT32U nbr, CPU_INT08U nbr_dig, CPU_INT08U nbr_base, CPU_CHAR lead_char, CPU_BOOLEAN lower_case, CPU_BOOLEAN nul, CPU_CHAR *pstr)
 
CPU_CHARStr_FmtNbr_Int32S (CPU_INT32S nbr, CPU_INT08U nbr_dig, CPU_INT08U nbr_base, CPU_CHAR lead_char, CPU_BOOLEAN lower_case, CPU_BOOLEAN nul, CPU_CHAR *pstr)
 
CPU_INT32U Str_ParseNbr_Int32U (CPU_CHAR *pstr, CPU_CHAR **pstr_next, CPU_INT08U nbr_base)
 
CPU_INT32S Str_ParseNbr_Int32S (CPU_CHAR *pstr, CPU_CHAR **pstr_next, CPU_INT08U nbr_base)
 

宏定义说明

#define LIB_STR_EXT   extern

在文件 lib_str.h118 行定义.

#define Str_FmtPrint   snprintf

在文件 lib_str.h189 行定义.

#define Str_FmtScan   sscanf

在文件 lib_str.h190 行定义.

#define Str_IsPrint (   a)    ASCII_IsPrint(a)

在文件 lib_str.h193 行定义.

#define Str_ToLong (   a,
  b,
 
)    Str_ParseNbr_Int32S((CPU_CHAR *)(a), (CPU_CHAR **)(b), (CPU_INT08U)(c))

在文件 lib_str.h194 行定义.

函数说明

CPU_SIZE_T Str_Len ( CPU_CHAR pstr)

在文件 lib_str.c208 行定义.

参考 DEF_INT_CPU_U_MAX_VAL , 以及 Str_Len_N().

参考自 BSP_Print(), BSP_SerPrint(), Str_Char_Last() , 以及 Str_Str().

209 {
210  CPU_SIZE_T len;
211 
212 
213  len = Str_Len_N((CPU_CHAR *)pstr,
215 
216  return (len);
217 }

函数调用图:

这是这个函数的调用关系图:

CPU_SIZE_T Str_Len_N ( CPU_CHAR pstr,
CPU_SIZE_T  len_max 
)

在文件 lib_str.c257 行定义.

参考自 Str_Len().

259 {
260  CPU_SIZE_T len;
261 
262 
263  len = 0;
264  while (( pstr != (CPU_CHAR *) 0 ) && /* Calc str len until NULL ptr (see Note #2a) ... */
265  (*pstr != (CPU_CHAR )'\0') && /* ... or NULL char found (see Note #2b) ... */
266  ( len < (CPU_SIZE_T)len_max)) { /* ... or max nbr chars srch'd (see Note #2c). */
267  len++;
268  pstr++;
269  }
270 
271  return (len);
272 }

这是这个函数的调用关系图:

CPU_CHAR* Str_Copy ( CPU_CHAR pdest,
CPU_CHAR psrc 
)

在文件 lib_str.c313 行定义.

参考 DEF_INT_CPU_U_MAX_VAL , 以及 Str_Copy_N().

参考自 App_DispScr_CtxSw(), App_DispScr_Inputs(), App_DispScr_SignOn() , 以及 App_DispScr_VersionTickRateCPU().

315 {
316  pdest = Str_Copy_N((CPU_CHAR *)pdest,
317  (CPU_CHAR *)psrc,
319 
320  return (pdest);
321 }

函数调用图:

这是这个函数的调用关系图:

CPU_CHAR* Str_Copy_N ( CPU_CHAR pdest,
CPU_CHAR psrc,
CPU_SIZE_T  len_max 
)

在文件 lib_str.c369 行定义.

参考自 Str_Copy().

372 {
373  CPU_CHAR *pstr;
374  CPU_CHAR *pstr_next;
375  CPU_SIZE_T len_copy;
376 
377  /* Rtn NULL if str ptr(s) NULL (see Note #2a). */
378  if (pdest == (CPU_CHAR *)0) {
379  return ((CPU_CHAR *)0);
380  }
381  if (psrc == (CPU_CHAR *)0) {
382  return ((CPU_CHAR *)0);
383  }
384 
385  if (len_max == (CPU_SIZE_T)0) { /* Rtn NULL if copy len equals zero (see Note #2d). */
386  return ((CPU_CHAR *)0);
387  }
388 
389 
390  pstr = pdest;
391  pstr_next = pstr;
392  pstr_next++;
393  len_copy = 0;
394 
395  while (( pstr_next != (CPU_CHAR *) 0 ) && /* Copy str until NULL ptr(s) [see Note #2b] ... */
396  ( psrc != (CPU_CHAR *) 0 ) &&
397  (*psrc != (CPU_CHAR )'\0') && /* ... or NULL char found (see Note #2c); ... */
398  ( len_copy < (CPU_SIZE_T)len_max)) { /* ... or max nbr chars copied (see Note #2d). */
399  *pstr = *psrc;
400  pstr++;
401  pstr_next++;
402  psrc++;
403  len_copy++;
404  }
405 
406  *pstr = (CPU_CHAR)'\0'; /* Append NULL char (see Note #2b2). */
407 
408 
409  return (pdest);
410 }

这是这个函数的调用关系图:

CPU_CHAR* Str_Cat ( CPU_CHAR pdest,
CPU_CHAR pstr_cat 
)

在文件 lib_str.c454 行定义.

参考 DEF_INT_CPU_U_MAX_VAL , 以及 Str_Cat_N().

456 {
457  pdest = Str_Cat_N((CPU_CHAR *)pdest,
458  (CPU_CHAR *)pstr_cat,
460 
461  return (pdest);
462 }

函数调用图:

CPU_CHAR* Str_Cat_N ( CPU_CHAR pdest,
CPU_CHAR pstr_cat,
CPU_SIZE_T  len_max 
)

在文件 lib_str.c513 行定义.

参考自 Str_Cat().

516 {
517  CPU_CHAR *pstr;
518  CPU_CHAR *pstr_next;
519  CPU_SIZE_T len_cat;
520 
521  /* Rtn NULL if str ptr(s) NULL (see Note #2a). */
522  if (pdest == (CPU_CHAR *)0) {
523  return ((CPU_CHAR *)0);
524  }
525  if (pstr_cat == (CPU_CHAR *)0) {
526  return ((CPU_CHAR *)0);
527  }
528 
529  if (len_max == (CPU_SIZE_T)0) { /* Rtn NULL if cat len equals zero (see Note #2e). */
530  return ((CPU_CHAR *)0);
531  }
532 
533 
534  pstr = pdest;
535  while (( pstr != (CPU_CHAR *) 0 ) && /* Adv to end of cur dest str until NULL ptr ... */
536  (*pstr != (CPU_CHAR )'\0')) { /* ... or NULL char found.. */
537  pstr++;
538  }
539  if (pstr == (CPU_CHAR *)0) { /* If NULL str overrun, rtn NULL (see Note #2b). */
540  return ((CPU_CHAR *)0);
541  }
542 
543  pstr_next = pstr;
544  pstr_next++;
545  len_cat = 0;
546 
547  while (( pstr_next != (CPU_CHAR *) 0 ) && /* Cat str until NULL ptr(s) [see Note #2c] ... */
548  ( pstr_cat != (CPU_CHAR *) 0 ) &&
549  (*pstr_cat != (CPU_CHAR )'\0') && /* ... or NULL char found (see Note #2d); ... */
550  ( len_cat < (CPU_SIZE_T)len_max)) { /* ... or max nbr chars cat'd (see Note #2d). */
551  *pstr = *pstr_cat;
552  pstr++;
553  pstr_next++;
554  pstr_cat++;
555  len_cat++;
556  }
557 
558  *pstr = (CPU_CHAR)'\0'; /* Append NULL char (see Note #2c2). */
559 
560 
561  return (pdest);
562 }

这是这个函数的调用关系图:

CPU_INT16S Str_Cmp ( CPU_CHAR p1_str,
CPU_CHAR p2_str 
)

在文件 lib_str.c641 行定义.

参考 DEF_INT_CPU_U_MAX_VAL , 以及 Str_Cmp_N().

643 {
644  CPU_INT16S cmp_val;
645 
646 
647  cmp_val = Str_Cmp_N((CPU_CHAR *)p1_str,
648  (CPU_CHAR *)p2_str,
650 
651  return (cmp_val);
652 }

函数调用图:

CPU_INT16S Str_Cmp_N ( CPU_CHAR p1_str,
CPU_CHAR p2_str,
CPU_SIZE_T  len_max 
)

在文件 lib_str.c743 行定义.

参考自 Str_Cmp() , 以及 Str_Str().

746 {
747  CPU_CHAR *p1_str_next;
748  CPU_CHAR *p2_str_next;
749  CPU_INT16S cmp_val;
750  CPU_SIZE_T cmp_len;
751 
752 
753  if (len_max == 0) { /* If cmp len equals zero, rtn 0 (see Note #3d1). */
754  return ((CPU_INT16S)0);
755  }
756 
757  if (p1_str == (CPU_CHAR *)0) {
758  if (p2_str == (CPU_CHAR *)0) {
759  return ((CPU_INT16S)0); /* If BOTH str ptrs NULL, rtn 0 (see Note #3a1A). */
760  }
761  cmp_val = (CPU_INT16S)0 - (CPU_INT16S)(*p2_str);
762  return (cmp_val); /* If p1_str NULL, rtn neg p2_str val (see Note #3a1B1).*/
763  }
764  if (p2_str == (CPU_CHAR *)0) {
765  cmp_val = (CPU_INT16S)(*p1_str);
766  return (cmp_val); /* If p2_str NULL, rtn pos p1_str val (see Note #3a1B2).*/
767  }
768 
769 
770  p1_str_next = p1_str;
771  p2_str_next = p2_str;
772  p1_str_next++;
773  p2_str_next++;
774  cmp_len = 0;
775  while ((*p1_str == *p2_str) && /* Cmp strs until non-matching chars (see Note #3c) ... */
776  (*p1_str != (CPU_CHAR )'\0') && /* ... or NULL chars (see Note #3b) ... */
777  ( p1_str_next != (CPU_CHAR *) 0 ) && /* ... or NULL ptr(s) found (see Note #3a2); */
778  ( p2_str_next != (CPU_CHAR *) 0 ) &&
779  ( cmp_len < (CPU_SIZE_T)len_max)) { /* ... or max nbr chars cmp'd (see Note #3d2). */
780  p1_str_next++;
781  p2_str_next++;
782  p1_str++;
783  p2_str++;
784  cmp_len++;
785  }
786 
787 
788  if (cmp_len == len_max) { /* If strs identical for len nbr of chars, ... */
789  return ((CPU_INT16S)0); /* ... rtn 0 (see Note #3d2). */
790  }
791 
792  if (*p1_str != *p2_str) { /* If strs NOT identical, ... */
793  cmp_val = (CPU_INT16S)(*p1_str) - (CPU_INT16S)(*p2_str); /* ... calc & rtn char diff (see Note #3c). */
794 
795  } else if (*p1_str == (CPU_CHAR)'\0') { /* If NULL char(s) found, ... */
796  cmp_val = 0; /* ... strs identical; rtn 0 (see Note #3b). */
797 
798  } else {
799  if (p1_str_next == (CPU_CHAR *)0) {
800  if (p2_str_next == (CPU_CHAR *)0) { /* If BOTH next str ptrs NULL, ... */
801  cmp_val = (CPU_INT16S)0; /* ... rtn 0 (see Note #3a2A). */
802  } else { /* If p1_str_next NULL, ... */
803  /* ... rtn neg p2_str_next val (see Note #3a2B1). */
804  cmp_val = (CPU_INT16S)0 - (CPU_INT16S)(*p2_str_next);
805  }
806  } else { /* If p2_str_next NULL, ... */
807  cmp_val = (CPU_INT16S)(*p1_str_next); /* ... rtn pos p1_str_next val (see Note #3a2B2). */
808  }
809  }
810 
811 
812  return (cmp_val);
813 }

这是这个函数的调用关系图:

CPU_INT16S Str_CmpIgnoreCase ( CPU_CHAR p1_str,
CPU_CHAR p2_str 
)

在文件 lib_str.c902 行定义.

参考 DEF_INT_CPU_U_MAX_VAL , 以及 Str_CmpIgnoreCase_N().

904 {
905  CPU_INT16S cmp_val;
906 
907 
908  cmp_val = Str_CmpIgnoreCase_N((CPU_CHAR *)p1_str,
909  (CPU_CHAR *)p2_str,
911 
912  return (cmp_val);
913 }

函数调用图:

CPU_INT16S Str_CmpIgnoreCase_N ( CPU_CHAR p1_str,
CPU_CHAR p2_str,
CPU_SIZE_T  len_max 
)

在文件 lib_str.c1014 行定义.

参考 ASCII_TO_LOWER.

参考自 Str_CmpIgnoreCase().

1017 {
1018  CPU_CHAR *p1_str_next;
1019  CPU_CHAR *p2_str_next;
1020  CPU_CHAR char1;
1021  CPU_CHAR char2;
1022  CPU_INT16S cmp_val;
1023  CPU_SIZE_T cmp_len;
1024 
1025 
1026  if (len_max == 0) { /* If cmp len equals zero, rtn 0 (see Note #3d1). */
1027  return ((CPU_INT16S)0);
1028  }
1029 
1030  if (p1_str == (CPU_CHAR *)0) {
1031  if (p2_str == (CPU_CHAR *)0) {
1032  return ((CPU_INT16S)0); /* If BOTH str ptrs NULL, rtn 0 (see Note #3a1A). */
1033  }
1034  char2 = ASCII_TO_LOWER(*p2_str);
1035  cmp_val = (CPU_INT16S)0 - (CPU_INT16S)char2;
1036  return (cmp_val); /* If p1_str NULL, rtn neg p2_str val (see Note #3a1B1).*/
1037  }
1038  if (p2_str == (CPU_CHAR *)0) {
1039  char1 = ASCII_TO_LOWER(*p1_str);
1040  cmp_val = (CPU_INT16S)char1;
1041  return (cmp_val); /* If p2_str NULL, rtn pos p1_str val (see Note #3a1B2).*/
1042  }
1043 
1044 
1045  p1_str_next = p1_str;
1046  p2_str_next = p2_str;
1047  p1_str_next++;
1048  p2_str_next++;
1049  char1 = ASCII_TO_LOWER(*p1_str);
1050  char2 = ASCII_TO_LOWER(*p2_str);
1051  cmp_len = 0;
1052  while (( char1 == char2) && /* Cmp strs until non-matching chars (see Note #3c) ... */
1053  (*p1_str != (CPU_CHAR )'\0') && /* ... or NULL chars (see Note #3b) ... */
1054  ( p1_str_next != (CPU_CHAR *) 0 ) && /* ... or NULL ptr(s) found (see Note #3a2); */
1055  ( p2_str_next != (CPU_CHAR *) 0 ) &&
1056  ( cmp_len < (CPU_SIZE_T)len_max)) { /* ... or max nbr chars cmp'd (see Note #3d2). */
1057  p1_str_next++;
1058  p2_str_next++;
1059  p1_str++;
1060  p2_str++;
1061  cmp_len++;
1062  char1 = ASCII_TO_LOWER(*p1_str);
1063  char2 = ASCII_TO_LOWER(*p2_str);
1064  }
1065 
1066 
1067  if (cmp_len == len_max) { /* If strs identical for len nbr of chars, ... */
1068  return ((CPU_INT16S)0); /* ... rtn 0 (see Note #3d2). */
1069  }
1070 
1071  if (char1 != char2) { /* If strs NOT identical, ... */
1072  cmp_val = (CPU_INT16S)char1 - (CPU_INT16S)char2; /* ... calc & rtn char diff (see Note #3c). */
1073 
1074  } else if (char1 == (CPU_CHAR)'\0') { /* If NULL char(s) found, ... */
1075  cmp_val = 0; /* ... strs identical; rtn 0 (see Note #3b). */
1076 
1077  } else {
1078  if (p1_str_next == (CPU_CHAR *)0) {
1079  if (p2_str_next == (CPU_CHAR *)0) { /* If BOTH next str ptrs NULL, ... */
1080  cmp_val = (CPU_INT16S)0; /* ... rtn 0 (see Note #3a2A). */
1081  } else { /* If p1_str_next NULL, ... */
1082  char2 = ASCII_TO_LOWER(*p2_str_next);
1083  cmp_val = (CPU_INT16S)0 - (CPU_INT16S)char2; /* ... rtn neg p2_str_next val (see Note #3a2B1). */
1084  }
1085  } else { /* If p2_str_next NULL, ... */
1086  char1 = ASCII_TO_LOWER(*p1_str_next);
1087  cmp_val = (CPU_INT16S)char1; /* ... rtn pos p1_str_next val (see Note #3a2B2). */
1088  }
1089  }
1090 
1091 
1092  return (cmp_val);
1093 }

这是这个函数的调用关系图:

CPU_CHAR* Str_Char ( CPU_CHAR pstr,
CPU_CHAR  srch_char 
)

在文件 lib_str.c1133 行定义.

参考 DEF_INT_CPU_U_MAX_VAL , 以及 Str_Char_N().

1135 {
1136  pstr = Str_Char_N((CPU_CHAR *)pstr,
1138  (CPU_CHAR )srch_char);
1139 
1140  return (pstr);
1141 }

函数调用图:

CPU_CHAR* Str_Char_N ( CPU_CHAR pstr,
CPU_SIZE_T  len_max,
CPU_CHAR  srch_char 
)

在文件 lib_str.c1191 行定义.

参考自 Str_Char().

1194 {
1195  CPU_CHAR *pstr_next;
1196  CPU_SIZE_T len_srch;
1197 
1198 
1199  if (pstr == (CPU_CHAR *)0) { /* Rtn NULL if srch str ptr NULL (see Note #2a). */
1200  return ((CPU_CHAR *)0);
1201  }
1202 
1203  if (len_max == (CPU_SIZE_T)0) { /* Rtn NULL if srch len equals zero (see Note #2e). */
1204  return ((CPU_CHAR *)0);
1205  }
1206 
1207 
1208  pstr_next = pstr;
1209  pstr_next++;
1210  len_srch = 0;
1211  while (( pstr_next != (CPU_CHAR *) 0 ) && /* Srch str until NULL ptr(s) [see Note #2b] ... */
1212  (*pstr != (CPU_CHAR )'\0') && /* ... or NULL char (see Note #2c) ... */
1213  (*pstr != (CPU_CHAR )srch_char) && /* ... or srch char found (see Note #2d); ... */
1214  ( len_srch < (CPU_SIZE_T)len_max)) { /* ... or max nbr chars srch'd (see Note #2e). */
1215  pstr++;
1216  pstr_next++;
1217  len_srch++;
1218  }
1219 
1220 
1221  if (*pstr != srch_char) { /* If srch char NOT found, str points to NULL; ... */
1222  return ((CPU_CHAR *)0); /* ... rtn NULL (see Notes #2b & #2c). */
1223  }
1224 
1225  return (pstr); /* Else rtn ptr to found srch char (see Note #2d). */
1226 }

这是这个函数的调用关系图:

CPU_CHAR* Str_Char_Last ( CPU_CHAR pstr,
CPU_CHAR  srch_char 
)

在文件 lib_str.c1267 行定义.

参考 Str_Len().

1269 {
1270  CPU_CHAR *pstr_next;
1271  CPU_SIZE_T str_len;
1272 
1273 
1274  if (pstr == (CPU_CHAR *)0) { /* Rtn NULL if srch str ptr NULL (see Note #2a). */
1275  return ((CPU_CHAR *)0);
1276  }
1277 
1278 
1279  pstr_next = pstr;
1280  str_len = Str_Len(pstr);
1281  pstr_next += str_len;
1282  while (( pstr_next != pstr) && /* Srch str from end until begining (see Note #2c) ... */
1283  (*pstr_next != srch_char)) { /* ... until srch char found (see Note #2d). */
1284  pstr_next--;
1285  }
1286 
1287 
1288  if (*pstr_next != srch_char) { /* If srch char NOT found, str points to NULL; ... */
1289  return ((CPU_CHAR *)0); /* ... rtn NULL (see Notes #2b & #2c). */
1290  }
1291 
1292  return (pstr_next); /* Else rtn ptr to found srch char (see Note #2d). */
1293 }

函数调用图:

CPU_CHAR* Str_Str ( CPU_CHAR pstr,
CPU_CHAR psrch_str 
)

在文件 lib_str.c1337 行定义.

参考 DEF_NO, DEF_YES, Str_Cmp_N() , 以及 Str_Len().

1339 {
1340  CPU_SIZE_T str_len;
1341  CPU_SIZE_T srch_str_len;
1342  CPU_SIZE_T srch_len;
1343  CPU_SIZE_T srch_ix;
1344  CPU_BOOLEAN srch_done;
1345  CPU_INT16S srch_cmp;
1346  CPU_CHAR *pstr_srch_ix;
1347 
1348  /* Rtn NULL if str ptr(s) NULL (see Note #2a). */
1349  if (pstr == (CPU_CHAR *)0) {
1350  return ((CPU_CHAR *)0);
1351  }
1352  if (psrch_str == (CPU_CHAR *)0) {
1353  return ((CPU_CHAR *)0);
1354  }
1355 
1356 
1357  str_len = Str_Len(pstr);
1358  srch_str_len = Str_Len(psrch_str);
1359  if (srch_str_len > str_len) { /* If srch str len > str len, rtn NULL (see Note #2b). */
1360  return ((CPU_CHAR *)0);
1361  }
1362  if (srch_str_len == 0) { /* If srch str len = 0, srch str equal NULL str; ... */
1363  pstr_srch_ix = (CPU_CHAR *)(pstr + str_len); /* ... rtn ptr to NULL str found in str (see Note #2c). */
1364  return (pstr_srch_ix);
1365  }
1366 
1367  srch_len = str_len - srch_str_len; /* Determine srch len (see Note #2d1). */
1368  srch_ix = 0;
1369  srch_done = DEF_NO;
1370  do {
1371  pstr_srch_ix = (CPU_CHAR *)(pstr + srch_ix);
1372  srch_cmp = Str_Cmp_N(pstr_srch_ix, psrch_str, srch_str_len);
1373  srch_done = (srch_cmp == 0) ? DEF_YES : DEF_NO;
1374  srch_ix++;
1375  } while ((srch_done == DEF_NO) && (srch_ix <= srch_len));
1376 
1377 
1378  if (srch_cmp != 0) { /* If srch str NOT found, rtn NULL (see Note #2d). */
1379  return ((CPU_CHAR *)0);
1380  }
1381 
1382  return (pstr_srch_ix); /* Rtn ptr to srch str found in str (see Note #2e). */
1383 }

函数调用图:

CPU_CHAR* Str_FmtNbr_Int32U ( CPU_INT32U  nbr,
CPU_INT08U  nbr_dig,
CPU_INT08U  nbr_base,
CPU_CHAR  lead_char,
CPU_BOOLEAN  lower_case,
CPU_BOOLEAN  nul,
CPU_CHAR pstr 
)

在文件 lib_str.c1476 行定义.

参考 DEF_NO , 以及 Str_FmtNbr_Int32().

参考自 App_DispScr_CtxSw(), App_DispScr_Inputs() , 以及 App_DispScr_VersionTickRateCPU().

1483 {
1484  CPU_CHAR *pstr_fmt;
1485 
1486 
1487  pstr_fmt = Str_FmtNbr_Int32((CPU_INT32U )nbr, /* Fmt unsigned int into str. */
1488  (CPU_INT08U )nbr_dig,
1489  (CPU_INT08U )nbr_base,
1491  (CPU_CHAR )lead_char,
1492  (CPU_BOOLEAN)lower_case,
1493  (CPU_BOOLEAN)nul,
1494  (CPU_CHAR *)pstr);
1495 
1496  return (pstr_fmt);
1497 }

函数调用图:

这是这个函数的调用关系图:

CPU_CHAR* Str_FmtNbr_Int32S ( CPU_INT32S  nbr,
CPU_INT08U  nbr_dig,
CPU_INT08U  nbr_base,
CPU_CHAR  lead_char,
CPU_BOOLEAN  lower_case,
CPU_BOOLEAN  nul,
CPU_CHAR pstr 
)

在文件 lib_str.c1602 行定义.

参考 DEF_NO, DEF_YES , 以及 Str_FmtNbr_Int32().

1609 {
1610  CPU_CHAR *pstr_fmt;
1611  CPU_INT32S nbr_fmt;
1612  CPU_BOOLEAN nbr_neg;
1613 
1614 
1615  nbr_fmt = nbr;
1616  if (nbr_fmt < 0) { /* If nbr neg, ... */
1617  nbr_fmt = -nbr_fmt; /* ... negate nbr. */
1618  nbr_neg = DEF_YES;
1619  } else {
1620  nbr_neg = DEF_NO;
1621  }
1622 
1623  pstr_fmt = Str_FmtNbr_Int32((CPU_INT32U )nbr_fmt, /* Fmt signed int into str. */
1624  (CPU_INT08U )nbr_dig,
1625  (CPU_INT08U )nbr_base,
1626  (CPU_BOOLEAN)nbr_neg,
1627  (CPU_CHAR )lead_char,
1628  (CPU_BOOLEAN)lower_case,
1629  (CPU_BOOLEAN)nul,
1630  (CPU_CHAR *)pstr);
1631 
1632  return (pstr_fmt);
1633 }

函数调用图:

CPU_INT32U Str_ParseNbr_Int32U ( CPU_CHAR pstr,
CPU_CHAR **  pstr_next,
CPU_INT08U  nbr_base 
)

在文件 lib_str.c2037 行定义.

参考 DEF_NO , 以及 Str_ParseNbr_Int32().

2040 {
2041  CPU_INT32U nbr;
2042 
2043 
2044  nbr = Str_ParseNbr_Int32((CPU_CHAR *)pstr, /* Parse/convert str ... */
2045  (CPU_CHAR **)pstr_next,
2046  (CPU_INT08U )nbr_base,
2047  (CPU_BOOLEAN )DEF_NO, /* ... as unsigned int (see Note #2a2). */
2048  (CPU_BOOLEAN *)0);
2049 
2050  return (nbr);
2051 }

函数调用图:

CPU_INT32S Str_ParseNbr_Int32S ( CPU_CHAR pstr,
CPU_CHAR **  pstr_next,
CPU_INT08U  nbr_base 
)

在文件 lib_str.c2252 行定义.

参考 DEF_INT_32S_MAX_VAL, DEF_INT_32S_MIN_VAL, DEF_INT_32S_MIN_VAL_ONES_CPL, DEF_NO, DEF_YES , 以及 Str_ParseNbr_Int32().

2255 {
2256  CPU_INT32S nbr;
2257  CPU_INT32U nbr_abs;
2258  CPU_BOOLEAN nbr_neg;
2259 
2260 
2261  nbr_abs = Str_ParseNbr_Int32((CPU_CHAR *) pstr, /* Parse/convert str ... */
2262  (CPU_CHAR **) pstr_next,
2263  (CPU_INT08U ) nbr_base,
2264  (CPU_BOOLEAN ) DEF_YES, /* ... as signed int (see Note #2a2). */
2265  (CPU_BOOLEAN *)&nbr_neg);
2266 
2267  if (nbr_neg == DEF_NO) { /* Chk for neg nbr & ovf/undf (see Note #2a3A1). */
2269  : (CPU_INT32S)nbr_abs;
2270  } else {
2272  : -(CPU_INT32S)nbr_abs;
2273  }
2274 
2275  return (nbr);
2276 }

函数调用图: