首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Strcmp和getchar

Strcmp和getchar
EN

Stack Overflow用户
提问于 2017-03-18 11:41:58
回答 1查看 237关注 0票数 0

我已经写了一个小的c程序,它显示输入的文本,如果输入的文本是"show version",它将显示该版本。以下是示例代码

代码语言:javascript
复制
#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。有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2017-03-18 11:45:09

阅读man pages for strcmp

如果两个字符串相等,则strcmp的返回值为0,这在C条件下被视为等同于false。

将您的if..statement更改为以下内容:

代码语言:javascript
复制
if(strcmp(&j, "show version") == 0) printf("v1");

注意:为了让您的代码解析一个字符串,您需要将读取的每个字符附加到一个字符串中。

代码语言:javascript
复制
#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键/换行符。这只是一个例子--别忘了释放你的内存!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42870200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档