我正在尝试将小写字符串转换为大写字母。
我遇到了一些错误(访问 volation)
怎么办?

int main()
{
    char str[10];
    int i=0;
    scanf("%s", &str);
    while (str[i] !=0)
    {
        str[i] += -32;
        printf("%s", str[i]);
    }
    return 0;
}

谢谢

最佳答案

  • 如果您输入的字符串长度超过 9 个字符,scanf() 将尝试写入字符串缓冲区的末尾。
  • 你的 while 循环永远不会终止,因为你永远不会改变 i
  • 您应该在 "%c" 调用中使用 printf() 作为格式字符串,因为您正在编写字符,而不是以空字符结尾的字符串。
  • 关于将小写字母转换为大写字母,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5500898/

    10-11 22:06