鍍金池/ 問答/C  HTML/ c語言中要用到strcmp函數,怎樣將int轉換為char *

c語言中要用到strcmp函數,怎樣將int轉換為char *

題目描述

希望大神們可以給出代碼啊

題目來源及自己的思路

一個查找函數,用到strcmp函數比較

相關代碼

// 請把代碼文本粘貼到下方(請勿用圖片代替代碼)
這是定義的結構體

typedef struct snode
{
    int No;            //學號 
    char Name[20];    //姓名 
    char Gender[5];    //性別 
    int Cnt;        //所選課程數 
    LNode *cj;        //成績 
    char brithday[20];//生日 
    double Avg;        //平均成績
    char party[6];  //是否黨員
    char phoneNo[15];//手機號碼 
    char addr[20];    //家庭住址 
}SNode;
void Search(SNode *a,int Count){
    
        char r[20];
    strcpy(r,"1");
    
    if(Count==0)
                cout<<"信息為空,請先創(chuàng)建信息"<<endl;
            
            else{
                int sel;
                do{
                    system("CLS");
                    menu2(); 
                    cin>>sel;
                    system("CLS");
                
                    if(sel==1) do{
                        
                        int flag=0;    
                        cout<<"請輸入學號,返回上層請按0"<<endl;
                        cin>>r;
                        for(int j=0;j<Count;j++)
                        
                            if(strcmp(a[j].No,r)==0){
                                cout<<a[j].No<<" "<<
                                a[j].name<<" "<<
                                a[j].gender<<" "<<
                                a[j].brithday<<" "<<
                                a[j].phoneNo<<" "<<
                                a[j].party<<" "<<
                                a[j].addr<<endl;
                            
                                flag=1;}
                                
                        if(!flag)
                        cout<<"查無此人,請重新輸入"<<endl;
                    }while(strcmp(r,"0")!=0);
                    else if(sel==2)
                        do{
                            strcpy(r,"1");
                            int flag=0;
                            cout<<"請輸入姓名,返回上層請按0"<<endl;
                            cin>>r;
                            for(int j=0;j<Count;j++)
                            if(strcmp(a[j].name,r)==0){
                                cout<<a[j].No<<" "<<
                                a[j].name<<" "<<
                                a[j].gender<<" "<<
                                a[j].brithday<<" "<<
                                a[j].phoneNo<<" "<<
                                a[j].party<<" "<<
                                a[j].addr<<endl;
                                
                                flag=1;}
                                
                        if(!flag)
                        cout<<"查無此人,請重新輸入"<<endl;
                        }while(strcmp(r,"0")!=0);
                    else if(a==0)
                        break;
                    else{
                        cout<<"請重新選擇"<<endl;
                        system("pause"); }
                }while(1);}
                break;
}

你期待的結果是什么?實際看到的錯誤信息又是什么?

主要是那個strcmp的錯誤

回答
編輯回答
下墜

下面是函數,
{

// num: src num; base: max is hex(16) ; str: dst str
int32_t me_uint64_to_str(uint64_t num, uint8_t base, char *str, int str_len)
{
    char tmp_str[32] = {0};
    int tmp_num = num;
    int i = 0;
    int tmp_len = 0;
    char tmp_ch = 0;

    if (base > 16)
    {
        // err("not support base\n");
        goto fail;
    }

    while (num)
    {
        tmp_num = num % base;
        tmp_str[i]= "0123456789ABCDEF"[tmp_num];
        num /= base;
        i++;
    }
    tmp_len = strlen(tmp_str);
    for (i = 0; i < tmp_len/2; i++)
    {
        tmp_ch = tmp_str[i];
        tmp_str[i] = tmp_str[tmp_len-1-i];
        tmp_str[tmp_len-1-i] = tmp_ch;
    }

    if ((tmp_len + 1) > str_len)
    {
        // err("str is too short\n ");
        goto fail;
    }
    memcpy(str, tmp_str, strlen(tmp_str) + 1);

    return 0;
fail:
    return -1;
}

}

這里是使用例子:
char tmp_str[20] = {0};
int tmp_num = 10;
me_uint64_to_str(num, 10, tmp_str, strlen(tmp_str));
cout << "result" << tmp_str << endl;

2017年10月10日 18:39