c打印字符串的实际内容

时间:2018-11-25 05:22:29

标签: c string

我要打印一个string,该名称由另一个string包含。 我的代码是这样的:

    int i=1;                            //forexample
    char end[9];
    char start[25]="kerdesek[index].";  //my question(kerdes) array 
    if(i==1){
        melyikkerdes='A';
        strcpy(vege,"a_valasz");         //the exact answer(=valasz) i want to
    }                                    //print
    else if(i==2){
        melyikkerdes='B';
        strcpy(vege,"b_valasz");
    }
    else if(i==3){
        melyikkerdes='C';
        strcpy(vege,"c_valasz");
    }
    else{
        melyikkerdes='D';
        strcpy(vege,"d_valasz");
    }
   strcat(end,start);
   printf("%s",start");                //i want to print the value of the
                                       //concatenated string here

我的程序打印:

kerdesek[index].a_valasz

您有什么解决方案吗?

2 个答案:

答案 0 :(得分:0)

C无法将字符串的内容作为表达式进行评估。您也许可以使用指针来做您想做的事,

int i=1;                            //forexample
struct kerdesek_type *kelem = &kerdesek[index];
char *string = 0;
if(i==1){
    melyikkerdes='A';
    string = kelem->a_valasz;
}
else if(i==2){
    melyikkerdes='B';
    string = kelem->b_valasz;
}
else if(i==3){
    melyikkerdes='C';
    string = kelem->c_valasz;
}
else{
    melyikkerdes='D';
    string = kelem->d_valasz;
}
printf("%s",string);

答案 1 :(得分:0)

如果我对您的理解正确,就不想打印

  

kerdesek [index] .a_valasz

但是结构元素包含什么? 您不能在运行时将C代码构造为字符串,并且不能将它们作为程序的可执行部分。

这是您要做什么吗?

#include <stdio.h>
#define MAX_RECORDS 2

struct ker
{
    char a_answer[50];
    char b_answer[50];
};

int main()
{
    struct ker questions[MAX_RECORDS] = {{"a_one", "b_one"},{"a_two", "b_two"}};

    char *reply_string = "None";

    int answer_number = 2; //Example
    int question_number = 1; //Example

    switch (answer_number){
        case 1:
            reply_string = questions[question_number].a_answer;
        break;

        case 2:
            reply_string = questions[question_number].b_answer;
        break;

        default:
            reply_string = "None";
        break;
    }

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

    return 0;
}