在 C 中使用三元运算符初始化字符串变量

问题描述 投票:0回答:1

所以我想将字符串设置为变量的值,这取决于其他一些测试用例。

        const char* trial_1;
        const char* trial_2;
        const char* trial_3;


        trial_1 = (pref_A != pref_B) ? "AB" : ((pref_A != pref_C)? "AC" : "AD" ) ;
        trial_2 = (pref_B == pref_C) ? B : ((pref_B == pref_D) ? B : C);
        trial_3 = (pref_B == pref_C) ? C : ((pref_B == pref_D) ? D : D);

        printf("%s/%s/%s", &trial_1, &trial_2, &trial_3);

但是,问题是当我为我的代码运行测试用例时。我得到这个作为输出

trying "swimmeet 1 1 1 1"
d/P/@/

代替这个,

trying "swimmeet 1 1 1 1"
A/B/C/D

这表明我正在打印内存地址而不是地址内部的值(如果我错了,请纠正我)。

在 vscode 上运行它,我遇到了这个问题:

我不知道如何解决这个问题。

我尝试过不使用 const char * 并使用 char [] 代替,但问题仍然存在

c string pointers printf conditional-operator
1个回答
0
投票

您打印了字符串的地址,而不是它们的内容。 使用这条线:

printf("%s/%s/%s", trial_1, trial_2, trial_3);

请注意,当您使用

printf
设置时,%s 会查找从地址 Trial_1Trial_2
Trial_3
开始的以 NULL 结尾的字符串。

© www.soinside.com 2019 - 2024. All rights reserved.