【问题标题】:Putting string inside if/else brackets? [closed]将字符串放在 if/else 括号内? [关闭]
【发布时间】:2017-07-31 15:47:18
【问题描述】:

我是 TurboC 的初学者,我的问题是在 if/else 语句中放入一个“单词”(字符串),然后它的输出在 printf 上

这是我的错误代码

#include <stdio.h>

main(){
    int enter;
    string thisword;

    clrscr();
    printf("Press number 1 then enter ");

    scanf("%i",&enter);

    if(enter==1){
        thisword = 'Thanks';
    }
    else{
        thisword = 'Error';
    }


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

    getch();
    return.0;
}

我不想将 printf 作为语句放在每个 if/else 括号中,例如

#include <stdio.h>

main(){
    int enter;

    clrscr();
    printf("Press number 1 then enter ");

    scanf("%i",&enter);

    if(enter==1){
        printf("\n Thanks");
    }
    else{
        printf("\n Error");
    }    
    getch();
    return.0;
}

【问题讨论】:

  • 你的程序编译正确吗?您正在使用 C++ 中的string
  • C 没有也从来没有原生字符串类型。按照惯例,该语言使用以空字符结尾的字符数组,即以 '\0' 结尾。
  • 不是它在这里,但是当有人使用来自哈佛的几乎毫无价值的 cs50.h 标头时,我经常在 C 代码中看到这一点 typedef char *string; (伙计,我想见见那些认为是教初学者的好东西)。他们应该坚持把法庭小丑吐出来,把工程留给其他学校。
  • 定义宏(#define string char*)或typedef(char * string)并使用双引号进行字符串赋值。

标签: c string if-statement char


【解决方案1】:

你应该写

thisword = "Thanks";

而不是

thisword = 'Thanks';

【讨论】:

  • 这假装string thisword; 很好,但它当然不是这样,所以它仍然无法单独通过这个更改来构建。
【解决方案2】:

我不知道Turbo C,但是C中不存在“字符串”类型。

  • 使用 char * 类型
  • 对字符串使用双引号“而不是简单的引号”

您的代码也可以正常工作。

#include <stdio.h>

int main() {
    int enter;
    char *thisword;

    printf("Press number 1 then enter ");
    scanf("%i",&enter);

    if (enter == 1) {
        thisword = "Thanks";
    }
    else {
        thisword = "Error";
    }
    printf("\n%s",thisword);
    return.0;
}

【讨论】:

  • I don't know Turbo C..恭喜,你有很好的机会实际学习C。:)
  • return 中使用括号:这根本不是必需的。这是风格问题,但很少有人用return 加上括号。它没用,它使return 语句看起来像一个函数调用。
  • 是的。请从其他很好的答案中删除关于退货声明的主观废话。无需向初学者教授晦涩且高度主观的编码风格。
  • 复制一下,你是对的
猜你喜欢
  • 2018-12-11
  • 2014-11-11
  • 1970-01-01
  • 2018-03-25
  • 1970-01-01
  • 1970-01-01
  • 2021-02-16
相关资源
最近更新 更多