C++ 更改字符数组中的字符
我在以下任务中遇到问题:C++ 更改字符数组中的字符,c++,arrays,function,pointers,C++,Arrays,Function,Pointers,我在以下任务中遇到问题: 接受有限字符数组 更改数组中的给定字符 打印更改的字符数组 这是我的密码: #include <iostream> using namespace std; void change(const char* source, char* target) { int j; for (j = 0; j < 100; j++) { if (source[j] == '.') { target[j] = '\n'; }
#include <iostream>
using namespace std;
void change(const char* source, char* target) {
int j;
for (j = 0; j < 100; j++) {
if (source[j] == '.') {
target[j] = '\n';
}
else {
target[j] = source[j];
}
}
return;
}
int main() {
int i;
char input[100] = {0}, output[100] = {0};
cout << "Bitte geben Sie einen Text ein: " << endl;
cin >> input[100];
change(&input[100], &output[100]);
for (i = 0; i < 100; i++) {
cout << output[i];
}
return 0;
}
#包括
使用名称空间std;
无效更改(常量字符*源,字符*目标){
int j;
对于(j=0;j<100;j++){
如果(源[j]='.'){
目标[j]='\n';
}
否则{
目标[j]=源[j];
}
}
回来
}
int main(){
int i;
字符输入[100]={0},输出[100]={0};
cout输入[100];
更改(&输入[100],&输出[100]);
对于(i=0;i<100;i++){
这比你想象的要容易,试试这个版本
cin >> input;
change(input, output);
认为input[100]
以某种方式代表了整个数组是初学者常见的误解。事实并非如此
声明数组时,[]
之间的数字是数组的大小,但使用数组时,[]之间的数字是
是您希望访问的元素的索引。这些是完全不同的含义,您不应混淆。此外,由于大小为100的数组只有0到99的有效索引input[100]
实际上正在尝试访问数组中不存在的元素
另一个错误是,您需要将循环限制为字符串的实际长度,这可能小于100
您可以使用strlen
函数查找字符串的长度,如下所示
int length = strlen(output);
for (i = 0; i < length; i++) {
cout << output[i];
}
int length=strlen(输出);
对于(i=0;i cout用另一种方式看这个节目:
#包括
#包括
使用std::cin;
使用std::cout;
使用std::endl;
//仅接受预定长度的数组
无效更改(常量字符和源)[100],字符和目标)[100])
{
int j=0;
对于(;j<100&&source[j]!='\0';++j)
{
目标[j]=(源[j]='。)?“\n”:源[j];
}
//确保我们使用空终止字符串
目标[std::min(j,100-1)]='\0';
}
int main()
{
字符输入[100];
cout-input;//读取到第一个非空格,通常是一个“单词”
字符输出[100]={};
变化(输入、输出);
对于(int i=0;i<100&&output[i]!='\0';i++)
{
您的代码在这里(和其他类似的地方)是否有未定义的行为:input[100]
,如果您声明了一个包含100个元素的char
数组,则有效索引从0
到99
。因此,点击这一行后,您的程序可能会出现很多问题。我们无法判断会发生什么,但告诉您:永远不要这样做。在询问家庭作业问题时,请尝试将您的问题简化为一个小问题您遇到的具体问题,而不仅仅是说“我的代码不工作”@JarMan抱歉,第二次在这里发帖,我将尝试在以后的问题中这样做。一个关于特殊酱汁的快速新程序员注释,它使strlen
工作。用于表示字符串的字符数组总是以字符串中不存在的特殊字符null结尾。strlen
读取,直到找到术语I为止nator。如果您忘记放置终止符,strlen
将一直读取,直到找到终止符为止,没有人能够安全地预测何时会找到终止符。所有基于字符数组的字符串操作函数都以相同的方式运行,因此您必须关注这些空终止符。常见错误的主要来源。