最后的魁拔 发表于 2019-12-8 15:30:22

为啥这样不可以把一个数组的ASCLL码放到另一个数组中

//只取第一次出现的值,然后加次数
#include <stdio.h>
#include <string.h>

int main()
{
        char ch;
        int i;
        int num;
       
        printf("请输入英文文本:");
        for(i=0;i<100;i++)
        {
                scanf("%c",&ch);
                if(ch=='\n')
                {
                        ch='0';
                        break;
                }
               
        }
        num='\0';
        printf("你总共输入了%d个字符\n",strlen(ch)-2);
        for(i=0;i<strlen(ch)-2;i++)
        {
                printf("%c的码是%d\n",ch,ch);
        }
       
        for(i=0;i<strlen(ch);i++)
        {
                num=(int)(ch);
        }
        printf("%s\n",num);
        return 0;
}

please

jackz007 发表于 2019-12-8 16:07:47

本帖最后由 jackz007 于 2019-12-8 16:16 编辑

      scanf("%c" , & ch) ;
      这一句 ch[ i ] 的值永远也不可能是换行符 '\n',因为这个函数独独会把换行符遗留在键盘缓冲区中。只有使用 getchar() 才可以连换行符一起把所有键盘输入字符都提取出来。这就意味着楼主的程序将陷在键盘输入的死循环中。
      输入字符串不用这么麻烦,直接用下面这句不行吗?
      scanf("%s" , ch) ;

2技能封走位 发表于 2019-12-8 16:37:22

#include <stdio.h>
#include <string.h>
int main()
{
        char ch={0};
    int i;
    int num={0};   
    printf("请输入英文文本:");
    scanf("%s",ch);
        printf("你总共输入了%d个字符\n",strlen(ch));
        for(i=0;i<strlen(ch);i++)
        {
                num=(int)(ch);
        }
        for(i=0;i<strlen(ch);i++)
        {
                printf("%c的码是%d\n",ch,num);
        }
        return 0;
}
自己看
页: [1]
查看完整版本: 为啥这样不可以把一个数组的ASCLL码放到另一个数组中