[英]Why isnt char array first element ASCII in C
所以我對 C 真的很陌生,但我有這個作業,我不知道出了什么問題
#include <stdio.h>
#define ARR_LEN 4
#define HEX_LEN 16
int main (void)
{
char input[ARR_LEN] = {0};
char validHex[HEX_LEN] = "0123456789ABCDEF";
int i, j, isHex = 1;
printf("Enter 4 elements: ");
scanf("%s", input);
for (i = 0, isHex = 1; i < ARR_LEN && isHex == 1; i++)
{
for (j = 0; j < HEX_LEN; j++)
{
printf("input(%c) == validHex(%c)\n", input[i], (validHex[j]));
if ((input[i] == validHex[j]))
{
isHex = 1;
break;
}
if (j == (HEX_LEN-1)) isHex = 0;
}
}
return 0;
}
它打印出這個:
Enter 4 digits: 0110
input(0) == validHex()
input(0) == validHex(1)
input(0) == validHex(2)
input(0) == validHex(3)
input(0) == validHex(4)
input(0) == validHex(5)
input(0) == validHex(6)
input(0) == validHex(7)
input(0) == validHex(8)
input(0) == validHex(9)
input(0) == validHex(A)
input(0) == validHex(B)
input(0) == validHex(C)
input(0) == validHex(D)
input(0) == validHex(E)
input(0) == validHex(F)
所以在我看來, validHex[HEX_LEN] 中的第一個元素無法讀取或類似的東西。 該程序的目標是確定字符串是否為十六進制。
#include <stdio.h>
#include <string.h>
#define ARR_LEN 20
int main (void)
{
char input[ARR_LEN];
char validHex[] = "0123456789ABCDEF";
int i, j, isHex = 1;
printf("Enter number: ");
fgets(input, ARR_LEN, stdin);
printf("\n");
for (i = 0, isHex = 1; i < strlen(input) && isHex == 1; i++)
{
isHex = 0;
for (j = 0; j < sizeof(validHex) - 1; j++)
{
if ((input[i] == validHex[j]))
{
isHex = 1;
break;
}
}
if(isHex)
printf("input('%c' dec(%d) ) == validHex(%d)\n", input[i], input[i], j);
else
printf("input('%c' dec(%d) ) is not valid Hex\n", input[i], input[i]);
}
}
#define ARR_LEN 4
應該
#define ARR_LEN 5
另外, char input[ARR_LEN] = {0};
不需要初始化,因為 scanf 將用 4 個字符加上最后的0
填充數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.