C-更改字符串中的字母
我用C语言编写了以下应用程序: 该应用程序基本上向用户呈现一个包含一个不正确字母的单词。要求用户提供错误字母的位置,并用新字母替换 问题是,如果我尝试更改字母4(数组索引3),新词将是Act而不是ACTIVE。如果我以编程方式进行,也就是说,更改这一行C-更改字符串中的字母,c,string,replace,character,C,String,Replace,Character,我用C语言编写了以下应用程序: 该应用程序基本上向用户呈现一个包含一个不正确字母的单词。要求用户提供错误字母的位置,并用新字母替换 问题是,如果我尝试更改字母4(数组索引3),新词将是Act而不是ACTIVE。如果我以编程方式进行,也就是说,更改这一行 string[letter_number - 1] = change; 对此 string[letter_number - 1] = 'u' 一切正常。请问我怎样才能解决这个问题?谢谢。在使用输入之前,请验证输入是否正确。听起来好像chang
string[letter_number - 1] = change;
对此
string[letter_number - 1] = 'u'
一切正常。请问我怎样才能解决这个问题?谢谢。在使用输入之前,请验证输入是否正确。听起来好像
change
设置为0,终止字符串
我不确定在
scanf()
调用之间的getchar()
调用是否正确,它们可能会丢失输入。请在使用它们之前验证输入是否正确。听起来好像change
设置为0,终止字符串
我不确定您在
scanf()
调用之间的getchar()
调用是否正确,它们可能会丢失输入。用一个简单的scanf
替换scanf\u s
,您就完成了。或者你可以用
scanf_s("%d ", ...);
并删除getchar()代码>
这对我很有用:
#include <string.h>
#include <stdio.h>
int main()
{
char string[9] = "Actwally";
int letter_number;
char change;
printf("---Spot the Odd Letter Out---\n\n");
printf("The word below contains one letter which is incorrect:\n\n");
printf("Word: %s\n\n\n", string);
printf("Please provide the position of the incorrect letter and propose a new letter\n\n");
printf("Position of incorrect letter: ");
scanf("%d ", &letter_number);
printf("\nProposed new letter: ");
scanf("%c ", &change);
string[letter_number - 1] = change;
printf("\n\nThe new word looks like this %s\n\n\n", string);
if(strcmp("Actually", string) == 0)
{
printf("You are right! Congratulations!");
}
else
{
printf("Sorry, but you have not guessed the word. Better luck next time!");
}
printf("\n\n\nPlease press enter to exit the program");
getchar();
}
#包括
#包括
int main()
{
字符字符串[9]=“Actwally”;
整数字母_数;
煤焦变化;
printf(“----找出奇数字母---\n\n”);
printf(“下面的单词包含一个不正确的字母:\n\n”);
printf(“单词:%s\n\n\n”,字符串);
printf(“请提供错误信函的位置并提出新信函\n\n”);
printf(“错误字母的位置:”);
scanf(“%d”和字母编号);
printf(“\n建议的新字母:”);
scanf(“%c”、&change);
字符串[字母编号-1]=更改;
printf(“\n\n新词看起来像这个%s\n\n”,字符串);
if(strcmp(“实际”,字符串)==0)
{
printf(“你说得对!祝贺你!”);
}
其他的
{
printf(“对不起,你没猜到这个词。祝你下次好运!”);
}
printf(“\n\n\n请按enter退出程序”);
getchar();
}
用一个简单的scanf
替换你的scanf\u
,你就完成了。或者你可以用
scanf_s("%d ", ...);
并删除getchar()代码>
这对我很有用:
#include <string.h>
#include <stdio.h>
int main()
{
char string[9] = "Actwally";
int letter_number;
char change;
printf("---Spot the Odd Letter Out---\n\n");
printf("The word below contains one letter which is incorrect:\n\n");
printf("Word: %s\n\n\n", string);
printf("Please provide the position of the incorrect letter and propose a new letter\n\n");
printf("Position of incorrect letter: ");
scanf("%d ", &letter_number);
printf("\nProposed new letter: ");
scanf("%c ", &change);
string[letter_number - 1] = change;
printf("\n\nThe new word looks like this %s\n\n\n", string);
if(strcmp("Actually", string) == 0)
{
printf("You are right! Congratulations!");
}
else
{
printf("Sorry, but you have not guessed the word. Better luck next time!");
}
printf("\n\n\nPlease press enter to exit the program");
getchar();
}
#包括
#包括
int main()
{
字符字符串[9]=“Actwally”;
整数字母_数;
煤焦变化;
printf(“----找出奇数字母---\n\n”);
printf(“下面的单词包含一个不正确的字母:\n\n”);
printf(“单词:%s\n\n\n”,字符串);
printf(“请提供错误信函的位置并提出新信函\n\n”);
printf(“错误字母的位置:”);
scanf(“%d”和字母编号);
printf(“\n建议的新字母:”);
scanf(“%c”、&change);
字符串[字母编号-1]=更改;
printf(“\n\n新词看起来像这个%s\n\n”,字符串);
if(strcmp(“实际”,字符串)==0)
{
printf(“你说得对!祝贺你!”);
}
其他的
{
printf(“对不起,你没猜到这个词。祝你下次好运!”);
}
printf(“\n\n\n请按enter退出程序”);
getchar();
}
Matthew
基本上,我在GCC编译器中测试了您的代码。我需要改变以下几点来让它工作
- “scanf_s”中的换行符不应该出现。原因如下如果格式说明符中存在空白字符(包括空格、换行符和制表符),scanf函数将读取并忽略(从stdin)在下一个非空白字符之前遇到的任何空白字符。因此,在这个特定的用例中;您的程序执行将在此scanf语句中无限等待,,即使在您输入输入后加上enter键李>
扫描(“%c\n”和更改)//更改如下
scanf(“%c”、&change)
- 在我看来,在scanfs之后使用“getchar”没有什么意义。最合适的方法应该是在第一次扫描之后刷新输入缓冲区,这样第二次扫描实际上期望用户输入,而不是从输入缓冲区中拾取
PS:请注意,fflush(stdin)不适用于GCC。
基本上,我在GCC编译器中测试了您的代码。我需要改变以下几点来让它工作
- “scanf_s”中的换行符不应该出现。原因如下如果格式说明符中存在空白字符(包括空格、换行符和制表符),scanf函数将读取并忽略(从stdin)在下一个非空白字符之前遇到的任何空白字符。因此,在这个特定的用例中;您的程序执行将在此scanf语句中无限等待,,即使在您输入输入后加上enter键李>
扫描(“%c\n”和更改)//更改如下
scanf(“%c”、&change)
- 在我看来,在scanfs之后使用“getchar”没有什么意义。最合适的方法应该是在第一次扫描之后刷新输入缓冲区,这样第二次扫描实际上期望用户输入,而不是从输入缓冲区中拾取
PS:请注意,fflush(stdin)不能与GCC一起使用。没有getchar(),出于某种原因,程序不允许我提供第二个输入(新字母)。有办法绕过它吗?我是C语言的新手。此外,我在Visual Studio中编程。这会产生任何问题吗?我不认为getchar有什么作用,因为程序会在正确的位置更改字符串,所以字母_number中的值不会丢失。问题在于更改中的值。@Matthew,丢失get