pintia上的一道题,小白求助
程序输入一个字符串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>='0'&&c<='9'){*(c+i)=d;}
}
}
int main(void){
char c,a;
gets(c);
scanf("%c",&a);
f(c,a);
printf("%s",c);
return 0;
}
它输出的总是和输入的一样 #include <stdio.h>
#define N 80
void f(char *c, char d) // 不能是 int 型,要用 char 型
{
int i;
for (i = 0;i<80;i++)
{
if (c >= '0'&&c <= '9') { *(c + i) = d; }
}
}
int main(void)
{
char c, a;
gets_s(c);
scanf("%c", &a);
f(c, a);
printf("%s", c);
return 0;
} 我仅仅只是改了第 4 行,下面那个 gets() 函数是因为我用 VS2015,它要求改为 gets_s(),这是因为微软认为 gets() 不安全 风过无痕1989 发表于 2020-12-16 21:42
我仅仅只是改了第 4 行,下面那个 gets() 函数是因为我用 VS2015,它要求改为 gets_s(),这是因为微软认为...
但凡放到编译器里也不会出这种低级错误。你不能仔细点嘛? 永恒的蓝色梦想 发表于 2020-12-16 21:59
但凡放到编译器里也不会出这种低级错误。你不能仔细点嘛?
我改成 char *c ,他的程序就运行正常了,只不过他的题目要求是用 int 型而已 风过无痕1989 发表于 2020-12-16 22:22
我改成 char *c ,他的程序就运行正常了,只不过他的题目要求是用 int 型而已
难道 gets_s 只有一个参数? 永恒的蓝色梦想 发表于 2020-12-16 22:23
难道 gets_s 只有一个参数?
gets_s 是不止一个参数,但已经不影响程序运行了,写不写也就没什么关系了。现在的问题是如何将 char* 转换为 int*,这个才是头痛的事 风过无痕1989 发表于 2020-12-16 22:52
gets_s 是不止一个参数,但已经不影响程序运行了,写不写也就没什么关系了。现在的问题是如何将 char* 转 ...
编译都过不去 永恒的蓝色梦想 发表于 2020-12-16 22:54
编译都过不去
程序编译、运行正常 风过无痕1989 发表于 2020-12-16 23:20
程序编译、运行正常
你用的这个 gets_s,C语言不能用…… 风过无痕1989 发表于 2020-12-16 23:20
程序编译、运行正常
https://s3.ax1x.com/2020/12/17/r3euCR.png 永恒的蓝色梦想 发表于 2020-12-17 06:35
这可能是设置的问题。我这里一开始,也是老老实实地写上后面的参数,后来发现,这个参数可以省略。所以,我在回答这类问题时,一般都会提醒是我的编译器要求要改的,这种函数包括有 scanf()、gets()、printf()。。。它们有时编译器要求要加,有时没有要求,只是一个警告 永恒的蓝色梦想 发表于 2020-12-17 06:29
你用的这个 gets_s,C语言不能用……
我曾经回答问题时,没有经过编译器运行,被人说过,所以,现在我发出来的任何程序,都是经过我的编译器运行正常后才发出来的,不然我就坚决不发。你可以去查一查,有很多帖子,我都是比别人晚了几十秒到半个钟,就是我必须要运行正常而消耗的时间,也因此失去了很多的最佳答案。
好了,不说这个问题了,我继续考虑如何将 char 类型的数组地址转换为 int 类型的数组地址 风过无痕1989 发表于 2020-12-17 09:14
这可能是设置的问题。我这里一开始,也是老老实实地写上后面的参数,后来发现,这个参数可以省略。所以, ...
gets_s 不加第二个参数顶多算个C++扩展,甚至还可能不是通用的(我不清楚),所以回答问题最好别用。
你把文件后缀改成 .c 就是按照 C 的标准了。 风过无痕1989 发表于 2020-12-17 09:23
我曾经回答问题时,没有经过编译器运行,被人说过,所以,现在我发出来的任何程序,都是经过我的编译器运 ...
将 char 类型的数组地址转换为 int 类型的数组地址int* p = NULL;
char* str = (char*)p;这不就行了? 永恒的蓝色梦想 发表于 2020-12-17 12:32
gets_s 不加第二个参数顶多算个C++扩展,甚至还可能不是通用的(我不清楚),所以回答问题最好别用。
你 ...
我还没学C++,所以,我编译程序时,都是加上 .c 的 风过无痕1989 发表于 2020-12-17 13:20
我还没学C++,所以,我编译程序时,都是加上 .c 的
你加上.c是怎么加的……你的源文件扩展名是 .cpp 永恒的蓝色梦想 发表于 2020-12-18 06:20
你加上.c是怎么加的……你的源文件扩展名是 .cpp
软件启用的后面就是 .cpp 呀
风过无痕1989 发表于 2020-12-18 10:20
软件启用的后面就是 .cpp 呀
……所以说这个代码用C标准编译不能通过 永恒的蓝色梦想 发表于 2020-12-18 18:43
……所以说这个代码用C标准编译不能通过
谢谢,我好像知道怎么使用C程序了
页:
[1]