Char和如果在C中的陈述

时间:2015-12-13 18:17:35

标签: c

我在比较if子句中的char和“some text”时遇到问题。 有代码:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
    char *start[99];
    printf("Welcome to MyOS 1");
    printf("\n" "#: ");
    scanf("%[98]", &start);
    if (&start == "help")
    {
        printf("All commands:" "File" "Calculator");
    }
}

2 个答案:

答案 0 :(得分:2)

start是一个指向char的指针数组,你可能需要一个char数组。所以改变

char *start[99];

char start[99];

并将scanf("%[98]", &start);更改为scanf("%[98]", start);

要比较c字符串,请使用strcmp()。所以改变

 if (&start == "help")

 if ( strcmp(start, "help") == 0 )

如果您想阅读,请使用fgets()代替scanf()

启用编译器警告也会有所帮助。对于您的代码,GCC问题:

  

警告:格式'%[98'需要类型'char *'的参数,但是参数   2的类型为'char *(*)[99]'[ - Wformat =]

     

警告:不同指针类型的比较缺少强制转换

     

警告:与字符串文字的比较结果未指定   行为[-Waddress]

答案 1 :(得分:0)

您的代码存在一些问题。你可能想要一个char数组,char start [99]。您应该使用strcmp或strncmp来比较字符串。只需使代码工作就可以这样做:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

int main()
{
    char start[99];
    printf("Welcome to MyOS 1");
    printf("\n" "#: ");
    fgets(start, sizeof(start), stdin);
    if (isalpha((unsigned char) *start) != 0)
    {
        if (strncmp(start, "help", 4) == 0)
            printf("All commands: File Calculator\n");
        else
            printf("No such command.\n");
    }
    else
        fprintf(stderr, "Error\n");
}