fork(2) download
  1. #include<stdio.h>
  2.  
  3. #define ARRAY_LEN (3)
  4.  
  5. typedef struct _INT_ARRAY {
  6. int m_data[ARRAY_LEN];
  7. } INT_ARRAY;
  8.  
  9. // set
  10. // 0 : ok
  11. // 1 : param error
  12. // 2 : index error
  13. int INT_ARRAY__Set(INT_ARRAY * p, int index, int d)
  14. {
  15. if (NULL == p) {
  16. return 1;
  17. }
  18. if (index < 0 || ARRAY_LEN <= index) {
  19. return 2;
  20. }
  21. p->m_data[index] = d;
  22. return 0;
  23. }
  24.  
  25. // get
  26. // 0 : ok
  27. // 1 : param error
  28. // 2 : index error
  29. int INT_ARRAY__Get(INT_ARRAY * p, int index, int *d)
  30. {
  31. if (NULL == p || NULL == d) {
  32. return 1;
  33. }
  34. if (index < 0 || ARRAY_LEN <= index) {
  35. return 2;
  36. }
  37. *d = p->m_data[index];
  38. return 0;
  39. }
  40.  
  41. int main()
  42. {
  43. INT_ARRAY int_data;
  44. int i, res, d;
  45.  
  46. for (i = 0; i < ARRAY_LEN; i++) {
  47. res = INT_ARRAY__Set(&int_data, i, i);
  48. if (res) {
  49. printf("error\n");
  50. return 1;
  51. }
  52. }
  53. for (i = -1; i < ARRAY_LEN + 1; i++) { // 範囲外アクセス
  54. printf("int_data.m_data[%2d] = ", i);
  55. res = INT_ARRAY__Get(&int_data, i, &d);
  56. if (res) {
  57. printf("error\n");
  58. } else {
  59. printf("%d\n", d);
  60. }
  61. }
  62. return 0;
  63. }
  64.  
Success #stdin #stdout 0s 2292KB
stdin
Standard input is empty
stdout
int_data.m_data[-1] = error
int_data.m_data[ 0] = 0
int_data.m_data[ 1] = 1
int_data.m_data[ 2] = 2
int_data.m_data[ 3] = error