我正在尝试将非分离的字符输入中的数字读入int数组。样本输入和输出:
Input: 12a34b56 C7d8E9
Output: [1,2,3,4,5,6,7,8,9]
这是我的尝试:
int check_digit (char c) {
if ((c>='0') && (c<='9')) return 1;
return 0;
}
int main(int argc, char const *argv[]) {
int numArray[1000], tempChar, c = 0;
tempChar = getchar();
while ( tempChar != EOF ) {
if ( check_digit(tempChar) ) {
numArray[c] = tempChar - '0';
c += 1;
}
tempChar = getchar();
}
printf("[");
for ( int i = 0; i < c-2; i++ ) {
printf("%d,", numArray[c]);
}
printf("%d]\n", numArray[c-1]);
return 0;
}
这不能正常工作。它在读完一个角色后停止。
示例输入和输出:
Input: 1a3b5c7d9
Output: [0,0,0,9]
Desired output: [1,3,5,7,9]
答案 0 :(得分:2)
您的代码中有拼写错误
printf("%d,", numArray[c]);
必须
printf("%d,", numArray[i]);
印刷循环可以简单地
printf("[");
for ( int i = 0; i < c; i++ )
{
printf("%d%c", numArray[i], (i<c-1)? ',' : ']');
}
printf("\n");
请注意,您的代码仅管理一位数值。例如。 45
的管理方式为4
和5
。