首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >传递'new_student‘的参数1可以使指针不受强制转换的整数转换

传递'new_student‘的参数1可以使指针不受强制转换的整数转换
EN

Stack Overflow用户
提问于 2014-04-30 16:35:59
回答 1查看 4.9K关注 0票数 0

我试图编辑一个structs.the用户数组,它能够输入3个数字,每个数字执行不同的操作。例如,您可以通过键入:

代码语言:javascript
复制
1
1234 marvin

这方面的所有代码如下

代码语言:javascript
复制
    void input_interpreter()
{   
    int input;
    char inputc1[106];
    scanf("%d", &input);

    switch(input)
    {
        case 0 :
            /*pretty self explanatory*/
            exit(0); 
            break;
        case 1 :
            /*add a student to the array*/
            scanf("%s", inputc1);
            new_student((string_split_string(inputc1),(string_split_int(inputc1)));/*<----the warning points here*/
            break;
        case 2 :
            /*Remove a specified student, (implicitly unenrolling them from all their units, if any), O(S + U).*/
            remove();
            break;
        case 3 :
            /*Print, in ascending numerical order of ID number, the ID numbers and names of the students in
            the database, O(S).*/
            print_array();
            break;
    }
     input_interpreter();
     return;
}

这是我用来区分身份证和名字的东西

代码语言:javascript
复制
    int string_split_int(char input_string[])
{
    char * ptr;
    int ID = 1;
    int  ch = " ";
    int i;
    int name_start;
    int array_length = sizeof(input_string);
    ptr =  strchr(input_string, ch);
    name_start = array_length - sizeof(ptr); /*may have to change this if names                  are including namespaces*/

    for(i = name_start; i >= array_length; i--)
    {
            ID=ID/10;
            ID=ID+input_string[i];
    }
    return ID;
}

char string_split_string(char input_string[])
{
    char * ptr;
    char name[100];
    int  ch = ' ';
    int i;
    int name_start;
    int array_length = sizeof(input_string);

    ptr =  strchr(input_string, ch);
    name_start = array_length - sizeof(ptr); /*may have to change this if names are including namespaces*/
    for(i = name_start; i <= array_length; i++)
    {
        name[i] = input_string[i];
    }
    return *name;
}


    void new_student(char *name, int ID)
{
    struct student s;       
    s.ID=ID;
    s.name=name;
    insert_array(s);
    return;
}

不幸的是,这抛出了一个传递参数1的'new_student‘使指针从整数没有强制转换警告。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-30 16:47:11

问题分析

根据签名

代码语言:javascript
复制
void new_student(char *name, int ID)

第一个参数必须是char *

不过,根据电话

代码语言:javascript
复制
new_student((string_split_string(inputc1),(string_split_int(inputc1)));
/*<----the warning points here*/

和每一个签名

代码语言:javascript
复制
char string_split_string(char input_string[]);

string_split_string()返回的类型,因此new_student()的第一个参数是char

简而言之,调用者提供的是char ,被调用者需要。

溶液素描

拆分字符串是一项相当常见的任务,在推出复杂的解决方案之前,请先对其进行(重新)搜索。

C

C++

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23393541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档