我的代码有什么问题?我无法编译它
What is wrong with my code? I can't compile it
因此,此程序的目标是显示用户键入的名称的首字母缩写。所以,如果我打詹姆斯伊萨克牛顿,它应该给我金。我尝试在终端中使用g++-Wall-o名称.cpp编译我的代码,但它无法编译。我到底做错了什么??
#include<iostream>
#include<string>
#include<stdio.h>
using namespace std;
int main()
{
char name[100];
gets(name);
char a,b,c;
cin>>name;
a=name[0];
int x;
for (int i=0;i<=strlen(name);i++)
{
if (name[i]==" ")
{
b=name[i+1];
x=i;
break;
}
}
for (int j=x;j<=strlen(name);j++)
{
if (name[j]==" ")
{
c=name[j+1];
}
}
cout<<a<<b<<c;
return 0;
}
编译器错误消息:我的文件名是acro.cpp acro.cpp:
In function âint main()â:
acro.cpp:8:2: warning: âchar* gets(char*)â is deprecated (declared at /usr/include/stdio.h:638) [-Wdeprecated-declarations]
acro.cpp:8:11: warning: âchar* gets(char*)â is deprecated (declared at /usr/include/stdio.h:638) [-Wdeprecated-declarations] acro.cpp:13:29: error: âstrlenâ was not declared in this scope
由于您声明了:
char name[100];
则CCD_ 1(如果i
是有效索引)是CCD_。但" "
不是一个字符文字,而是一个字符串;你应该给编码
if (name[j]==' ')
顺便说一句,您应该阅读更多关于C++(及其std::string)的内容,并考虑声明
std::string name;
并调整程序的其余部分以使其发挥作用。BTW,编译所有警告&调试信息(g++ -Wall -Wextra -g
)并学习如何使用调试器(gdb
)
据推测,编译器告诉了您出了什么问题,但您忘记提供这些信息。我的编译器说
‘strlen’ was not declared in this scope
因为您忘记包含定义它的头<cstring>
。
然后它说
ISO C++ forbids comparison between pointer and integer
解释起来有点棘手;它指的是这个
if (name[i]==" ")
尝试将字符(转换为整数)与字符串(转换为指针)进行比较。相反,与另一个字符进行比较:
if (name[i]==' ')
^ ^
一旦编译完成,就去掉gets(name);
。它的作用与cin >> name;
相同,但(也许)更危险。然后考虑使用name[i]
0而不是C样式的char
数组;这样,如果输入超过100个字符,程序就不会爆炸。
除了编译器错误,您还犯了一个错误:-
gets(name);
char a,b,c;
cin>>name;
第二个cin会覆盖您使用get输入的第一个值。
相关文章:
- 在Linux for Windows上编译C++代码时出错
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 在程序中编写脚本来编写和编译代码
- 未定义的引用 .. 使用 OpenCV 编译 C++ 代码时,从命令行
- 在macos上编译代码的未解析符号
- 使用个人C++库编译代码时,与头文件一起使用时会中断
- 使用指针编译代码后,.cpp文件将变为随机字符
- VS Express 无法正确编译代码(?
- 如何在Ubuntu中使用Visual Studio代码编译C++代码
- 使用 Android NDK 使用 clang++ 编译C++代码时对"_Unwind_Resume"的未定义引用
- 无法使用两个包装不同下一层的ssl_stream编译代码
- 编译代码时"[Warning] extra tokens at end of"
- 无法编译代码,因为它已在 C++11 中弃用
- 如何在 Azure 应用服务中使用 cl.exe 编译 C++ 代码并生成可执行文件
- 如何调试编译 c++ 代码的 bazel?
- 为什么在使用转换构造函数编译代码时需要 const 复制构造函数?
- 编译 C++ 代码后尺寸较大
- 使用用 C++ 和 DDS 编写的 CMAKE 编译代码
- 编译代码时如何不制作二进制文件?
- 如何使用所有其他文件信息来编译代码,例如HAAR级联训练的权重的XML文件