我已经写了一个小的c程序,它显示输入的文本,如果输入的文本是"show version",它将显示该版本。以下是示例代码
#include<stdio.h>
#include<string.h>
void main(){
int i;
char j = (char) i;
while(i != '#'){
i = getchar();
if(strcmp(&j, "show version")) printf("v1");
else putchar(i);
}}它为每个char+1打印v1。有什么建议吗?
发布于 2017-03-18 11:45:09
如果两个字符串相等,则strcmp的返回值为0,这在C条件下被视为等同于false。
将您的if..statement更改为以下内容:
if(strcmp(&j, "show version") == 0) printf("v1");注意:为了让您的代码解析一个字符串,您需要将读取的每个字符附加到一个字符串中。
#define LINE_SIZE 512
int main(){
char *line = malloc(LINE_SIZE);
while(fgets(line, LINE_SIZE, stdin)) {
if(strncmp(line, "show version", strlen(line) - 1) == 0) {
printf("v1\n");
} else {
continue;
}
break;
}
return 0;
}我之所以使用strncmp (而不是strcmp)和strlen(line) - 1,是因为fgets在输入时还会捕获Enter键/换行符。这只是一个例子--别忘了释放你的内存!
https://stackoverflow.com/questions/42870200
复制相似问题