【发布时间】:2016-05-17 00:38:09
【问题描述】:
#include "stdlib.h"
#include "stdio.h"
#include "string.h"
#include "termios.h"
int main (int ac, char* av[]) {
struct termios ttyinfo;
int result;
result = tcgetattr(0, &ttyinfo);
if (result == -1) {
perror("cannot get params about stdin");
exit (1);
}
if (av[1] == "stop" && av[2] == "A") {
printf ("Stop: ^%c\n", ttyinfo.c_cc[VSTOP] - 19 + 'A');
}
if (av[1] == "start" && av[2] == "^Q") {
printf ("Stop: ^%c\n", ttyinfo.c_cc[VSTOP] - 3 + 'A');
}
return 0;
}
我正在学习Linux,这段代码是用C编写的。使用命令行显示字符变化。例如:./example stop A。但是,它不会在屏幕上显示任何内容。
【问题讨论】:
-
它不是
print,因为您使用strncmp来测试是否相等(而不是==)。 -
此外,即使您修复了字符串比较,如果您不将它正在寻找的两个参数组合之一传递给它,您的程序也不会打印任何内容(因此它可能并不罕见什么都不打印)。最后,如果传递给程序的参数少于两个,它将表现出不可预测的行为 - 可能会崩溃。
-
==在字符串上只是比较它们的地址,所以在你的情况下比较会失败。您需要调用strcmp来比较实际的字符串。
标签: c