如何将字符串的ASCII值解释为C中的字符?



我有一个数字序列,表示字母表字符[a, Z], [a, Z]和&quot的ASCII值;"。我可以在字符中获得其中一个值的ascii值(即char = 76),但是当我试图进行边界检查并追加结果时,我似乎无法获得"L"而不是76,并且不能将char值与边界的ASCII值(即A = 65)进行比较。在C语言中怎么做呢?

//input would be something like char* source = "76111114..."
// result should be "Lor"
for(int i = 0; i < strLen; i+=2)
{
char actualChar = ' ';

//get two numbers as a character
strncpy(&actualChar, source + i, 2);

//this prints out 76
printf("%sn", &actualChar);
//this prints out 55
printf("%dn", actualChar);


//check if the character is a space
if(actualChar == 32)
{
//append
strncat(result, &actualChar, 2);
printf("Added space : %sn", result);
continue;
}

//[A, Z]
else if(actualChar >= 65 && actualChar <= 90)
{
//append
strncat(result, &actualChar, 2);
printf("Added 2 digit char: %s, %sn", &actualChar ,result);
continue;
}

else
{
//add one number to the char and check again
strncpy(&actualChar, source + i, 3);

//[a, z]
if(actualChar >= 97 && actualChar <= 122)
{
++i;

//append
strncat(result, &actualChar, 3);
printf("Added 3 digit char: %s, %sn", &actualChar ,result);

continue;
}

//not a valid char
else
{
printf("Not valid char: %s", &actualChar);
return 0;
}
}
}

我希望结果是"Lor"但是我得到的却是"76111114"。

正如评论中提到的,sscanf(source, "%2d", &actualChar) and sscanf(source, "%3d", &actualChar)是获得它的最简单方法,尽管我必须将actualChar转换为int*以使sscanf工作:

sscanf(source+ i, "%2d", (int*)(&actualChar));

最新更新