0

我的代码是

#include <stdio.h>
int main()
{
    int name;
    scanf("%d",&name);
    printf("%d",name);
}

为什么当我输入 "Hello","World","Good" 等时它必须显示 2 ?为什么 2 不是其他数字?如果我想扫描字符串并打印它的 ASCII 码,我应该怎么做?谢谢你

4

3 回答 3

0

为什么当我输入 "Hello","World","Good" 等时它必须显示 2 ?为什么 2 不是其他数字?

这只是因为它正在调用未定义的行为。你会得到任何东西。有时它会给出你想要的输出。有时它会给出我想要的输出。有时它不会给出任何人想要的输出。

如果我想扫描字符串并打印它的 ASCII 码,我应该怎么做?

使用getchar函数“逐个字符”读取字符串,然后使用说明符打印每个字符的 ASCII 值%d

#include <stdio.h>
int main()
{
    char name;
    while((name = getchar()) != '\n')
        printf("%c\t%d\n",name,name);
} 

注意:看,在我的代码中我没有使用数组来存储字符串。您的字符串可以是任意长度。

于 2013-10-07T10:40:22.673 回答
0

scanf当您输入看起来不像数字的内容(例如Hello, World,Good都是无效输入)时,您没有检查最有可能返回错误的返回值。

这意味着该变量name没有被写入,因此您的printf调用实际上表现出未定义的行为(通过访问未初始化的变量),这可能解释了您的2.

但请记住,因为您正在调用未定义的行为,所以从技术上讲,您可以得到任何东西(它不一定是2)。

于 2013-10-07T10:40:37.307 回答
0

要打印输入字符串的 ascii 值:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(){
  char array[100];   
    int i=0;
    printf("Enter string : ");
    scanf("%s",array);    // fixed as suggested in comments

    for(i=0;i<strlen(array);i++){

        printf("%d-",array[i]);

    }
    printf("\n");
    return 0;
}

此代码的输出:

Enter string : hello
104-101-108-108-111-

编辑:

正如评论中的好人所指出的那样...确保为您认为输入大小永远不会超过的某个值定义数组大小...

于 2013-10-07T10:47:13.120 回答