void replaceLetters(char *text, char original, char new_char) 应该改变文本
void replaceLetters(char *text, char original, char new_char) should change text
我已经尝试解决这个问题好几个小时了。
void replaceLetters(char *text, char original, char new_char)
{
text = "Randoi";
for(int i = 0; i != '[=11=]'; i++){
if(text[i] == original){
text[i] = new_char;
}
}
如果我在这个函数中打印出文本,它是正确的,但在另一个调用这个函数的函数中,文本没有改变,我知道我的指针有问题。
请指点一下。坦克很多。
你的函数定义没有意义,至少因为你覆盖了第一个参数
text = "Randoi";
用字符串文字的地址和for循环中的条件
for(int i = 0; i != '[=11=]'; i++){
不正确。那就是 for 循环永远不会进行迭代。
您不应使用 int
类型作为索引,函数应 return 结果字符串。
函数可以通过以下方式声明和定义
char * replaceLetters(char *text, char original, char new_char)
{
for ( char *p = text; *p; ++p )
{
if ( *p == original ) *p = new_char;
}
return text;
}
注意不能使用函数改变字符串字面量。任何更改字符串文字的尝试都会导致未定义的行为。
这是一个演示程序。
#include <stdio.h>
char * replaceLetters(char *text, char original, char new_char)
{
for ( char *p = text; *p; ++p )
{
if ( *p == original ) *p = new_char;
}
return text;
}
int main(void)
{
char s[] = "character";
puts( s );
puts( replaceLetters( s, 'a', 'A' ) );
return 0;
}
程序输出为
character
chArActer
请看我的代码。
#include <stdio.h>
void replaceLetters(char *text, char original, char new_char)
{
for(int i = 0; text[i] != '[=10=]'; i++)
{
if(text[i] == original)
{
text[i] = new_char;
}
}
}
int main()
{
char text[] = "Randoi";
replaceLetters(text,'n','T');
printf(text);
return 0;
}
for循环的条件是"for(int i = 0; text[i] != '\0'; i++)"
我已经尝试解决这个问题好几个小时了。
void replaceLetters(char *text, char original, char new_char)
{
text = "Randoi";
for(int i = 0; i != '[=11=]'; i++){
if(text[i] == original){
text[i] = new_char;
}
}
如果我在这个函数中打印出文本,它是正确的,但在另一个调用这个函数的函数中,文本没有改变,我知道我的指针有问题。
请指点一下。坦克很多。
你的函数定义没有意义,至少因为你覆盖了第一个参数
text = "Randoi";
用字符串文字的地址和for循环中的条件
for(int i = 0; i != '[=11=]'; i++){
不正确。那就是 for 循环永远不会进行迭代。
您不应使用 int
类型作为索引,函数应 return 结果字符串。
函数可以通过以下方式声明和定义
char * replaceLetters(char *text, char original, char new_char)
{
for ( char *p = text; *p; ++p )
{
if ( *p == original ) *p = new_char;
}
return text;
}
注意不能使用函数改变字符串字面量。任何更改字符串文字的尝试都会导致未定义的行为。
这是一个演示程序。
#include <stdio.h>
char * replaceLetters(char *text, char original, char new_char)
{
for ( char *p = text; *p; ++p )
{
if ( *p == original ) *p = new_char;
}
return text;
}
int main(void)
{
char s[] = "character";
puts( s );
puts( replaceLetters( s, 'a', 'A' ) );
return 0;
}
程序输出为
character
chArActer
请看我的代码。
#include <stdio.h>
void replaceLetters(char *text, char original, char new_char)
{
for(int i = 0; text[i] != '[=10=]'; i++)
{
if(text[i] == original)
{
text[i] = new_char;
}
}
}
int main()
{
char text[] = "Randoi";
replaceLetters(text,'n','T');
printf(text);
return 0;
}
for循环的条件是"for(int i = 0; text[i] != '\0'; i++)"