【问题标题】:How can I get this to print the new characters in a string properly in C?如何在 C 中正确打印字符串中的新字符?
【发布时间】:2021-09-27 18:27:22
【问题描述】:

每次我运行这段代码时,我输入了一些我想用新字符切换出来的字符,它只打印出未更改的字符。我需要改变什么来解决这个问题?

#include <stdio.h>
#include "string.h"
int main()
{
 char originalPassword [50];
 char newPassword [50];
 int length;

printf("Please enter your current password. \n");
scanf("%s", originalPassword);
length = strlen(originalPassword);
for(int i = 0; i < length; i++)
{
    printf("%c\n", originalPassword[i]);
    if(originalPassword[i]=='i');
    {
       originalPassword[i] = '1';
    }
    
    if(originalPassword[i]=='a')
    {
       originalPassword[i]='@';
    }
    else
    {
        
    }
 }

}

【问题讨论】:

  • 您在进行任何切换之前打印。了解一些rubber duck debugging 会很有用。
  • "它只打印出未更改的字符。"当然,因为代码只在更改任何内容之前使用printf("%c\n", originalPassword[i]); 打印。
  • scanf("%s", ...); 是一场等待发生的灾难。至少写scanf("%49s", ...); 来限制读取的字符。如果你从一本书中学到了这一点,那就烧掉它。如果您是从在线教程中获得的,请将其打印出来并刻录。如果你是从导师那里学到的,那么我不会容忍在火刑柱上焚烧人类,但至少告诉他互联网上有人不同意他的观点。

标签: c if-statement printing


【解决方案1】:

应该只需要将 for 循环中的 printf 语句移动到 if-else 语句之后的循环底部,然后它应该打印你想要的。

对于将来,如果您尝试打印某些内容但它没有打印出您想要的内容,请尝试在代码中添加更多 printf 语句以查看代码是否可以到达它。如果他们不打印,那么您就知道它没有到达那里。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-19
    • 1970-01-01
    • 2023-03-30
    • 2020-07-04
    • 1970-01-01
    相关资源
    最近更新 更多