我是一名c ++初学者,我正在努力为以下作业制作一个程序:
创建一个名为“StringLength”的项目。主程序应该包含一个函数(称为findStringLength),它将计算字符串的长度(即字符串中的字符数,不包括终止空字符)。 主程序应使用以下测试字符串测试函数的操作: "短串" "用于测试目的的较长字符串" "" " " 声明四个字符数组并分配这些测试值。程序的输出应采用下面显示的每个测试字符串的形式: 长度"短" = 5 你应该编写代码来自己计算字符串的长度;不要使用任何库函数来执行此操作。 请注意,如果引号为"要包含在字符串中,它应该以反斜杠\字符开头 - 以防止它被解释为字符串的结尾: " Quotation char \"在字符串" 将显示为: Quotation char"在字符串
我的代码如下:
#include <iostream>
using namespace std;
size_t findStringLength (char*);
int main()
{
char n1[] = "Short string";
char n2[] = "A longer string is used for test purposes";
char n3[] = "";
char n4[] = " ";
int stringlength;
stringlength = findStringLength("Short string/");
cout << "Length of " << n1 << " = " << stringlength << endl;
stringlength = findStringLength("A longer string used for test purposes/");
cout << "\nLength of " << n2 << " = " << stringlength << endl;
stringlength = findStringLength("/");
cout << "\nLength of " << n3 << " = " << stringlength << endl;
stringlength = findStringLength(" /");
cout << "\nLength of " << n4 << " = " << stringlength << endl;
cout << "\n";
}
size_t findStringLength (char string[])
{
int i=0;
while(string[i])i++;
return i;
}
编辑我现在有了上面显示的代码,它在一定程度上给出了正确的输出。问题是我收到了这个
错误:H:\ StringLength \ main.cpp:16:警告:不推荐将字符串常量转换为&#39; char *&#39; [-Wwrite串] stringlength = findStringLength(&#34;短字符串/&#34;); ^
答案 0 :(得分:0)
我建议使用简单的while循环:
int string_length = 0;
while (input_str[string_length] != '\0') { string_length++; }
return string_length;
它沿着字符串迭代,直到它遇到空字符。
答案 1 :(得分:0)
该功能可以用很多方式编写。例如
size_t findStringLength( const char *s )
{
size_t n = 0;
while ( s[n] != '\0' ) ++n;
return n;
}
考虑到你为字符数组调用函数(正如你的作业中所描述的那样)。所以你的函数声明
char findStringLength (char);
是错误的,因为参数未声明为字符数组或指向字符数组的第一个元素的指针。你也指定了错误的返回类型。
这两个函数声明是等效的
size_t findStringLength( const char s[] );
size_t findStringLength( const char *s );
答案 2 :(得分:0)
我想回答你的以下疑问
我在从char *转换为char时也收到重复错误。
=&GT;这实际上是你得到的错误,因为你将字符串传递给声明为的函数:
char findStringLength (char);
你传递的实际上是n1,n2等实际上是char类型的数组,而不是字符串本身。你应该阅读更多关于在c ++中传递参数的函数,在这种情况下你必须传递它按值更好地将您的函数声明为:
char findStringLength (char*);
答案 3 :(得分:0)
int findStringLength (char string[])
{
int i=0;
while(string[i])i++;
return i;
}