【问题标题】:Why does adding to ascii adds up extra characters?为什么添加到 ascii 会增加额外的字符?
【发布时间】:2021-05-18 04:12:44
【问题描述】:

所以,我尝试用 C 语言创建一个程序,将大写字符转换为小写,只需将 32 加到大写字符即可。

#include <stdio.h>

int main()
{
  char user_inp[16];
  char final_res[16];
  int ascii;
  printf("%s", "Enter any string : ");
  scanf("%s", &user_inp);

  for (int i = 0; user_inp[i] != 0; i++){
    ascii = (int) user_inp[i];
    if (ascii < 91&& ascii > 64){
      ascii = ascii + 32;
    }
    final_res[i] = ascii;
  }

  printf("%s\n", final_res);

  return 0;
}

但是当我运行它时,我得到了一些额外的jibrish结果。

For example,
Input : Apple
Output : apple

But,
Input : Encyclopedia
Output : encyclopedia�U

我遇到了什么问题?我该如何解决这个问题?

【问题讨论】:

  • 您没有初始化final_res,因此输出字符串不会以空值结尾,并且在字符串打印到 is 找到。最简单的修复:char final_res[16] = "";
  • 您的代码中有一些不好的做法:如果没有必要,切勿使用幻数。如果要与'A' 进行比较,请使用&gt;='A',而不是&gt;64。如果要转换大小写字母,请使用ctype.h 中的标准函数tolower()。虽然攻击非 ASCII 系统的机会确实很小,但依赖此类实现定义的细节绝不是一个好主意。

标签: c ascii


【解决方案1】:

C 字符串需要以空值结尾。 user_inp 是。但final_res 不是。

【讨论】:

    猜你喜欢
    • 2011-01-01
    • 2015-02-21
    • 2020-11-25
    • 2013-01-13
    • 2020-10-08
    • 1970-01-01
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    相关资源
    最近更新 更多