ice_cream0_0 2015-02-08 12:25 采纳率: 0%
浏览 4495

error C2440:无法从“const char [5]”转换为char [20]”

图片说明
我想写一个根据输入即时查询的功能,但是这里报错了,

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
struct record
{
    char name[20];
    char number[20];
}NumberInfo[500];//通讯录列表
int NO;
int j;
FILE *fp;
void main(){
    NO=10;
    for(int i =0;i<10;i++){
         NumberInfo[i].name = "张三";//给联系人赋值
         NumberInfo[i].number="13701234567";


    }
    sort();
    find();



}
void sort()//排序
{
    int i,j;
    struct record s;
    int flag=1;
    for(i=0;i<NO-1&&flag;i++){
        flag=0;
        for(j=NO-2;j>=i;j--){
            if(strcmp(NumberInfo[j].name,NumberInfo[j+1].name)>0){
                s=NumberInfo[j];
                NumberInfo[j]=NumberInfo[j+1];
                NumberInfo[j+1]=s;
                flag=1;
            }
        }
    }
}

void find(){//查找
    char i;
    char shuru[20];
    j=0;
    printf("请输入你要查找的用户名\n");
    if(scanf("%c",&i)!='\0'){//及时根据输入查询联系人
        shuru[j]=i;
        j++;
        found(shuru);
    }
}

void found(char s[]){
    for(int i=0;i<NO;i++){
        if(strstr(NumberInfo[i].name,s)!=NULL){
            printf("%s: %s\n",NumberInfo[i].name,NumberInfo[i].number);
        }
    }
    printf("%s",s);
} 

想问一下,这是什么问题?该怎么解决?

  • 写回答

6条回答

  • ljianhui 2015-02-08 14:45
    关注

    在C语言中,不支持这种对数组的直接赋值,因为数组表示一段内存,而不是一个变量。所以需要使用相关的函数把字符串(同样对应着一段内存)的内容复制到该数组对应 的内存中,如:
    strcpy(NumberInfo[i].name, "张三");
    strcpy(NumberInfo[i].number, "13701234567");

    若你的字符串不需要改变,可以使用char*(字符指针)来代替字符数组,如const char *name,这样就可以这样使用
    name = "张三";
    因为字符指针是一个指针变量,可以指向"张三"这一段的内存。

    评论

报告相同问题?

悬赏问题

  • ¥15 求chat4.0解答一道线性规划题,用lingo编程运行,第一问要求写出数学模型和lingo语言编程模型,第二问第三问解答就行,我的ddl要到了谁来求了
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果