使用sprintf和sscanf在给定的数字中将所有0替换为5

Moh*_*ief 4 c c++ printf scanf

我试图将给定整数中的所有0替换为5。

为此,我正在使用sprintf将整数转换为字符串并对字符串进行操作,最后将字符串转换回整数

下面是代码:

#include<stdio.h>

int main() {

    int num=0, i=0;
    char str[10];

    printf("Enter the number: ");
    scanf("%d",&num);

    sprintf(str,"%d",num);
    printf("string str:%s",str);
    while(str[i]!='\0')
    {
        if(str[i]==0)
            str[i]=5;
        i++;
    }

    sscanf(str,"%d",&num);

    printf("\nBefore replacement: %s", str);
    printf("\nAfter replacement: %d", num);

}
Run Code Online (Sandbox Code Playgroud)

我输出错误

有人可以识别并纠正这里的问题。谢谢 :)

Bla*_*aze 7

scanf("%d", num);应该是scanf("%d", &num);

还有这个

if (str[i] == 0)
    str[i] = 5;
Run Code Online (Sandbox Code Playgroud)

应该

if (str[i] == '0')
    str[i] = '5';
Run Code Online (Sandbox Code Playgroud)

因为0与相同'\0',但是您要替换代表的字符0

同样,在输出中,您前后混在一起。