您已声明
data
as类型
char
,意味着它只能容纳
仅有一个的
字符值(
'A'
',
'1'
,
'0'
,
'\n'
等)。
如果您希望能够存储
一串
到
数据
(例如
"axe"
或
"foo"
或
"Supercalifragilisticexpialidocious"
),那么您需要申报
数据
作为一个
大堆
属于
烧焦
,并且数组大小必须至少比要存储的最长字符串的长度长一倍:
#define STRING_LENGTH 20 // store strings *up to* 20 characters long
...
char data[STRING_LENGTH + 1]; // +1 for the 0 terminator that marks
// the end of the string
至于无尽的循环,
'a'
(97)永远不等于
i
(0),并且从不更新循环中任一实体的值。每次通过循环都必须更新其中一个。这是我想要的
认为
你要做的是:
if ( fgets( data, sizeof data, stdin ) ) // safer than using scanf
{
for ( size_t i = 0; data[i] != 0; i++ )
{
printf( "%d ", data[i] ); // print out character encoding value
}
}
该代码接受用户输入的字符串,并将每个字符(ASCII、EBCDIC、UTF-8等)的编码值打印为整数。