teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

問題点の修正

2021/06/01 08:52

投稿

Savanof
Savanof

スコア33

title CHANGED
File without changes
body CHANGED
@@ -50,28 +50,34 @@
50
50
  }
51
51
 
52
52
 
53
-
54
53
  // main
55
54
  int main(){
56
55
 
57
56
  char input1[MAX_INPUT];
58
57
  char input2[MAX_INPUT];
59
- const char *p_input1 = input1;
58
+ const char *p_input1;
60
- const char *p_input2 = input2;
59
+ const char *p_input2;
61
60
 
62
61
  int input1_siz;
63
62
  int input2_siz;
64
63
  int ans_size;
65
64
 
66
65
 
67
- printf("Enter The First LongInt");
66
+ printf("Enter The First LongInt \n");
68
67
  fgets(input1 , MAX_INPUT , stdin);
68
+ if(p_input1 = strchr(input1, '\n')){
69
69
 
70
+ p_input1 = '\0';
71
+ }
72
+
73
+
74
+
70
- printf("Enter The Second LongInt");
75
+ printf("Enter The Second LongInt \n");
71
76
  fgets(input2 , MAX_INPUT , stdin);
77
+ if(p_input2 = strchr(input2, '\n')){
72
78
 
73
- printf("%s",input1);
79
+ p_input2 = '\0';
74
- printf("%s",input2);
80
+ }
75
81
 
76
82
  // input1,input2の配列サイズを入手する
77
83
  input1_siz = strlen(input1);
@@ -79,13 +85,12 @@
79
85
 
80
86
  // 二つの配列の内大きい方を作成する。
81
87
  int N = (max(input1_siz, input2_siz));
82
- int int_ans_lis[N];
83
- char str_ans[N];
88
+ char ans_lis[N];
84
89
 
85
90
  revStr(input1);
86
- revStr(input2);
91
+ revStr(input2);
87
92
 
88
- for (int i = 1; i < N; i++){
93
+ for (int i = 0; i < N; i++){
89
94
 
90
95
  int num1 , num2;
91
96
  // OutOfIndexしないようにする。
@@ -93,21 +98,23 @@
93
98
  num1 = 0;
94
99
  }
95
100
  else{
96
- num1 = atoi(&p_input1[i]);
101
+ num1 = input1[i]- '0';
97
102
  }
98
103
 
99
104
  if(input2_siz < N){
100
105
  num2 = 0;
101
106
  }
102
107
  else{
103
- num2 = atoi((&p_input2[i]));
108
+ num2 = input2[i] - '0';
104
109
  }
105
110
 
106
- int_ans_lis[i] = (num1 + num2);
111
+ ans_lis[i] = (num1 + num2);
112
+ // printf("%d\n",ans_lis[i]);
113
+ // 最終的にはanslisも+'0'を行い文字列化する。
107
114
 
108
115
  }
109
116
 
110
- for(int i = 0; i <input1_siz;++i){
117
+ for(int i = 0; i <input1_siz;++i){
111
118
  printf("input1's no %d is %c \n" ,i,input1[i]);
112
119
  }
113
120
 
@@ -116,38 +123,33 @@
116
123
  }
117
124
 
118
125
  for(int i = 0; i <N;++i){
119
- printf("anslis's no %d is %d \n" ,i,int_ans_lis[i]);
126
+ printf("anslis's no %d is %d \n" ,i,ans_lis[i]);
120
- }
127
+ }
121
-
128
+ }
122
129
  ```
123
130
  ### 発生している問題・エラーメッセージ
124
131
  発生している問題がいくつかあるのですが、
125
132
  1.文字配列を一文字ずつprintfすると、先頭が空白?になる
126
- 2.入力が"123" , "456"の場合はint_ans_lisの構造を[9,7,5]というようにしたいが、できない
133
+ 2.入力が"123" , "456"の場合はint_ans_lisの構造を[9,7,5]というようにしたいが、できない - **解決しました。**
127
- 3.int_ans_lisの先頭にアクセスすると、意図しない数字(1998638272)が出現する。
134
+ 3.int_ans_lisの先頭にアクセスすると、意図しない数字(1998638272)が出現する。 **- 解決しました。**
128
135
  これらの問題に対処できません。
129
136
  ```
130
- Enter The First LongInt123
137
+ Enter The First LongInt
131
- Enter The Second LongInt456
132
-
133
138
  123
139
+ Enter The Second LongInt
134
140
  456
141
+ input1's no 0 is
135
142
 
136
- input1's no 0 is
137
-
138
143
  input1's no 1 is 3
139
144
  input1's no 2 is 2
140
145
  input1's no 3 is 1
141
-
142
146
  input2's no 0 is
143
147
 
144
148
  input2's no 1 is 6
145
149
  input2's no 2 is 5
146
150
  input2's no 3 is 4
147
-
148
- anslis's no 0 is 1998638272
151
+ anslis's no 0 is -76
149
- anslis's no 1 is 975
152
+ anslis's no 1 is 9
150
- anslis's no 2 is 75
153
+ anslis's no 2 is 7
151
154
  anslis's no 3 is 5
152
-
153
155
  ```