我需要写一个程序
I need to write a program
任务:编写一个程序,在函数中使用指向字符串的指针来使用结构确定字符串中的字符数。
编译器抛出错误:
error: invalid conversion from 'char' to 'const char*' [-fpermissive]
8 | cout << strlen(a);
| ^
| |
| char
这是我的代码:
#include <iostream>
#include <cstring>
using namespace std;
void func(char a)
{
cout << strlen(a);
}
int main()
{
struct student
{
char name[64];
};
student student1;
cin >> student1.name;
char* ptr = &student1.name[64];
func(*ptr);
return 0;
}
程序中有几个无效的构造。
你至少得改写
void func( const char *a )
^^^^^^^^^^^^^^
和
char* ptr = student1.name;
func(ptr);
而不是
cin >> student1.name;
最好用
cin.get( student1.name, sizeof( student1.name ) );
此外,您似乎不被允许使用标准 C 函数 strlen
,必须自己编写等效函数。
char a
是单个字符,所以 strlen(a)
无效你需要将指针传递给 func:
void func(const char* a)
{
cout << strlen(a);
}
int main()
{
struct student
{
char name[64];
};
student student1;
cin >> student1.name;
char* ptr = student1.name;
func(ptr);
return 0;
}
我还更改了 &student1.name[64]
,因为这会得到一个指向数组中最后一个元素之后的元素的指针,这不是您想要的。
因为我们使用的是 C++,所以我们可以使用 std::string
来使您的代码更简单、更安全:
void func(const std::string& a)
{
cout << a.size();
}
int main()
{
struct student
{
std::string name;
};
student student1;
cin >> student1.name;
func(student1.name);
return 0;
}
任务:编写一个程序,在函数中使用指向字符串的指针来使用结构确定字符串中的字符数。
编译器抛出错误:
error: invalid conversion from 'char' to 'const char*' [-fpermissive]
8 | cout << strlen(a);
| ^
| |
| char
这是我的代码:
#include <iostream>
#include <cstring>
using namespace std;
void func(char a)
{
cout << strlen(a);
}
int main()
{
struct student
{
char name[64];
};
student student1;
cin >> student1.name;
char* ptr = &student1.name[64];
func(*ptr);
return 0;
}
程序中有几个无效的构造。
你至少得改写
void func( const char *a )
^^^^^^^^^^^^^^
和
char* ptr = student1.name;
func(ptr);
而不是
cin >> student1.name;
最好用
cin.get( student1.name, sizeof( student1.name ) );
此外,您似乎不被允许使用标准 C 函数 strlen
,必须自己编写等效函数。
char a
是单个字符,所以 strlen(a)
无效你需要将指针传递给 func:
void func(const char* a)
{
cout << strlen(a);
}
int main()
{
struct student
{
char name[64];
};
student student1;
cin >> student1.name;
char* ptr = student1.name;
func(ptr);
return 0;
}
我还更改了 &student1.name[64]
,因为这会得到一个指向数组中最后一个元素之后的元素的指针,这不是您想要的。
因为我们使用的是 C++,所以我们可以使用 std::string
来使您的代码更简单、更安全:
void func(const std::string& a)
{
cout << a.size();
}
int main()
{
struct student
{
std::string name;
};
student student1;
cin >> student1.name;
func(student1.name);
return 0;
}