error C2440: '=' : cannot convert from 'char (*)[6]' to 'char [256]'

程序#include<stdio.h>#include<string.h>#include<stdlib.h>voidmain(){charstring_wifiname... 程序
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void main()
{
char string_wifiname[100];
char string_keyword[100];
char wifi[] = "netsh wlan set hostednetwork mode=allow ";
char a[10];
char ssid[]="ssid=";
char keyword[]=" key=";
scanf("%s",&string_wifiname);

strcat(ssid,string_wifiname);

a=&ssid;
scanf("%s",&string_keyword);
strcat(keyword,string_keyword);

printf("%s\n",ssid);

}
异常
Compiling...
demo5.cpp
D:\Myself\VC++6.0\VC6CN\MyProjects\demo5\demo5.cpp(16) : error C2440: '=' : cannot convert from 'char (*)[6]' to 'char [10]'
There are no conversions to array types, although there are conversions to references or pointers to arrays
执行 cl.exe 时出错.

demo5.obj - 1 error(s), 0 warning(s)
展开
 我来答
tianxiawulang
2014-02-05 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2584万
展开全部

没搞明白你是想通过 a=&ssid; 达到什么目的?后面也并没有用到 a 啊。

a 被声明成 char array,不能这样直接赋值的,更何况,&ssid 是取一个字符数组的地址,与a的类型不匹配。

即使改成 a=ssid 也不行,因为 char [6] 和 char [10] 也是不能转换的,仍然会导致C2440错误。

再进一步,声明 char a[6]; 也不行,因为 a 不是左值(l-value),会导致C2106错误。

 

如果你是想把ssid的地址传给a,那么应该把a声明成为一个字符类型的指针;

如果你是想把ssid的内容复制到a里面去,那么应该用strcpy函数,或者用循环来完成。

追问
我主要是想把输入的ssid和输入的keyword拼接到字符串中,然后再将拼接后的ssid和keyword拼接到一个字符串中,且中间有空格。。。 然后就弄不明白了,直接接的话,环境就崩了。。包括按照你说的用strcpy函数,环境还是崩。。。
追答

1、你现在程序最大的问题是,使用strcat进行字符串拼接,但用于保存结果的字符串并未定义足够的空间。例如,第一处

strcat(ssid,string_wifiname);

其作用是把string_wifiname的内容附加到ssid上,但ssid按照定义其长度为6,所以拼接的结果必然会超出ssid的存储范围,从而导致不确定的后果。正确的做法是,要给保存结果的字符串分配足够的空间,或者,使用更安全的CString类来进行字符串操作。

 

2、即使存在上述问题,多数情况下应该也不会导致崩溃,至少,我这里把出错的那句删掉之后,程序是可以运行的(未崩溃)。

 

3、按照惯例,使用sscanf输入数据,一般应该先用printf给出提示。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式