![](/img/trans.png)
[英]Read Extended ASCII Characters from File and Convert to ASCII Decimal Value
[英]Read several ASCII characters and get the value
有人可以解释或纠正我的代码吗? 我正在尝试输入几个字符并获得ascii值
例如:输入:ab; 输出:9798
这是我的代码,但最后有一个10
#include <stdio.h>
int main() {
char c;
printf("Enter any character\n");
for (c=0; c<=122; c++)
{
scanf("%c", &c);
printf("%d",c);
}
return 0;
}
如果查看ASCII表 ,则十进制值为10
是换行符。 换句话说,您将\\n
字符作为输入的一部分处理。 例如,当用户复制粘贴多行或按下Enter键时,可能会发生这种情况。 如果您不希望这种情况发生,您需要格外小心忽略\\n
。 例如:
#include <stdio.h>
int main() {
char c;
printf("Enter any character\n");
for (c=0; c<=122; c++)
{
scanf("%c", &c);
if (c == '\n')
break; /* Or perhaps continue? Depends on what you actually want. */
printf("%d",c);
}
return 0;
}
另请注意,不同的系统可能有不同的约定,实际上是换行符。 在UNIX上,它只是\\n
字符,在Windows上,它可能是组合或\\r
和\\n
。 因此,如果您想让您的程序可移植,则需要将其考虑在内。 您可以自己做,也可以使用其他库(想到GNU getline )。 您可以在此处阅读有关换行的更多信息。
您可能希望从输出中排除一些字符,而不仅仅是'\\ n',在这种情况下,您可以尝试这样的事情:
#include <stdio.h>
int isEndingChar(char c) {
char terminators[3] = {'\r','\t','\n'}
int n;
for( n=0; n<3; n++ ) {
if( terminators[i]==c )
return 1;
}
return 0;
}
int main() {
char c;
printf("Enter any character\n");
for (c=0; c<=122; c++)
{
scanf("%c", &c);
if( isEndingChar( c ) )
break;
printf("%d",c);
}
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.