鱼C论坛

 找回密码
 立即注册
查看: 1684|回复: 19

[已解决]pintia上的一道题,小白求助

[复制链接]
发表于 2020-12-16 20:18:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
程序输入一个字符串c和某个特定字符a,然后将字符串c中的数字字符替换为字符a,输出替换后的字符串c。
设计实现函数void f(int *c,char d),函数的功能为将字符串c中的数字字符替换为字符d。(要求不能使用字符串处理库函数直接替换)。
#include <stdio.h>
#define N 80

void f(int *c,char d){
    int i;
    for(i=0;i<80;i++){
        if(c[i]>='0'&&c[i]<='9'){*(c+i)=d;}
    }
}

int main(void){
    char c[N],a;
    gets(c);
    scanf("%c",&a);
    f(c,a);
    printf("%s",c);
    return 0;
}
它输出的总是和输入的一样
最佳答案
2020-12-16 21:39:16
#include <stdio.h>
#define N 80

void f(char *c, char d)    // 不能是 int 型,要用 char 型
{
        int i;
        for (i = 0;i<80;i++)
        {
                if (c[i] >= '0'&&c[i] <= '9') { *(c + i) = d; }
        }
}

int main(void)
{
        char c[N], a;
        gets_s(c);
        scanf("%c", &a);

        f(c, a);
        printf("%s", c);
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-16 21:39:16 | 显示全部楼层    本楼为最佳答案   
#include <stdio.h>
#define N 80

void f(char *c, char d)    // 不能是 int 型,要用 char 型
{
        int i;
        for (i = 0;i<80;i++)
        {
                if (c[i] >= '0'&&c[i] <= '9') { *(c + i) = d; }
        }
}

int main(void)
{
        char c[N], a;
        gets_s(c);
        scanf("%c", &a);

        f(c, a);
        printf("%s", c);
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-16 21:42:17 | 显示全部楼层
我仅仅只是改了第 4 行,下面那个 gets() 函数是因为我用 VS2015,它要求改为 gets_s(),这是因为微软认为 gets() 不安全
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-16 21:59:57 | 显示全部楼层
风过无痕1989 发表于 2020-12-16 21:42
我仅仅只是改了第 4 行,下面那个 gets() 函数是因为我用 VS2015,它要求改为 gets_s(),这是因为微软认为  ...

但凡放到编译器里也不会出这种低级错误。你不能仔细点嘛?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-16 22:22:49 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-12-16 21:59
但凡放到编译器里也不会出这种低级错误。你不能仔细点嘛?

我改成 char *c ,他的程序就运行正常了,只不过他的题目要求是用 int 型而已
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-16 22:23:16 | 显示全部楼层
风过无痕1989 发表于 2020-12-16 22:22
我改成 char *c ,他的程序就运行正常了,只不过他的题目要求是用 int 型而已

难道 gets_s 只有一个参数?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-16 22:52:43 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-12-16 22:23
难道 gets_s 只有一个参数?

gets_s 是不止一个参数,但已经不影响程序运行了,写不写也就没什么关系了。现在的问题是如何将 char* 转换为 int*,这个才是头痛的事
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-16 22:54:28 | 显示全部楼层
风过无痕1989 发表于 2020-12-16 22:52
gets_s 是不止一个参数,但已经不影响程序运行了,写不写也就没什么关系了。现在的问题是如何将 char* 转 ...

编译都过不去
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-16 23:20:13 | 显示全部楼层

程序编译、运行正常
编译.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-17 06:29:54 | 显示全部楼层

你用的这个 gets_s,C语言不能用……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-17 06:35:58 | 显示全部楼层


                               
登录/注册后可看大图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-17 09:14:41 | 显示全部楼层

这可能是设置的问题。我这里一开始,也是老老实实地写上后面的参数,后来发现,这个参数可以省略。所以,我在回答这类问题时,一般都会提醒是我的编译器要求要改的,这种函数包括有 scanf()、gets()、printf()。。。它们有时编译器要求要加,有时没有要求,只是一个警告
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-17 09:23:22 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-12-17 06:29
你用的这个 gets_s,C语言不能用……

我曾经回答问题时,没有经过编译器运行,被人说过,所以,现在我发出来的任何程序,都是经过我的编译器运行正常后才发出来的,不然我就坚决不发。你可以去查一查,有很多帖子,我都是比别人晚了几十秒到半个钟,就是我必须要运行正常而消耗的时间,也因此失去了很多的最佳答案。

好了,不说这个问题了,我继续考虑如何将 char 类型的数组地址转换为 int 类型的数组地址
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-17 12:32:21 | 显示全部楼层
风过无痕1989 发表于 2020-12-17 09:14
这可能是设置的问题。我这里一开始,也是老老实实地写上后面的参数,后来发现,这个参数可以省略。所以, ...

gets_s 不加第二个参数顶多算个C++扩展,甚至还可能不是通用的(我不清楚),所以回答问题最好别用。
你把文件后缀改成 .c 就是按照 C 的标准了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-17 12:37:59 | 显示全部楼层
风过无痕1989 发表于 2020-12-17 09:23
我曾经回答问题时,没有经过编译器运行,被人说过,所以,现在我发出来的任何程序,都是经过我的编译器运 ...
将 char 类型的数组地址转换为 int 类型的数组地址
int* p = NULL;
char* str = (char*)p;
这不就行了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-17 13:20:17 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-12-17 12:32
gets_s 不加第二个参数顶多算个C++扩展,甚至还可能不是通用的(我不清楚),所以回答问题最好别用。
你 ...

我还没学C++,所以,我编译程序时,都是加上 .c 的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-18 06:20:02 | 显示全部楼层
风过无痕1989 发表于 2020-12-17 13:20
我还没学C++,所以,我编译程序时,都是加上 .c 的


你加上.c是怎么加的……你的源文件扩展名是 .cpp
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-18 10:20:59 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-12-18 06:20
你加上.c是怎么加的……你的源文件扩展名是 .cpp

软件启用的后面就是 .cpp 呀
设置.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-18 18:43:01 | 显示全部楼层
风过无痕1989 发表于 2020-12-18 10:20
软件启用的后面就是 .cpp 呀

……所以说这个代码用C标准编译不能通过
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-18 19:51:11 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-12-18 18:43
……所以说这个代码用C标准编译不能通过

谢谢,我好像知道怎么使用C程序了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 09:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表