【发布时间】: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