C得到差异字符串和整数

时间:2013-03-04 07:34:14

标签: c

您好我是C编程的新手,目前我开始获取用户输入的简单应用程序,现在如何从用户获取输入并区分用户输入是否包含字符串,整数或两者的组合。

我尝试了以下内容:

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main(int argc, char * argv[])
{
    char * s = "CPROGRAMMING";
    int i;
    boolean flag = true;
    for(i = 0;, i < strlen(s) && flag == true; i++)
    {
        if(isalpha(s[i]) && isupper(s[i])) flag = true;
        else flag = false;
    }
    if(flag) printf("A string contains only uppercase and alphabet letters\n");
    return 0;
}

但似乎无法找到合适的输入。我在这里缺少什么?

3 个答案:

答案 0 :(得分:1)

一些问题:

  • 要获得用户输入,请使用scanf
  • C没有boolean,您的意思是int吗?
  • 你的循环是多余的,你只检查最后一个字母 - 好吧,你检查所有,但是最后一次设置标志时只考虑最后一个。您可以根据需要使用break
  • 来中断循环执行
  • 循环中的条件有一个迷路,

答案 1 :(得分:1)

您的代码存在一些语法问题。

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

int main(int argc, char* argv[])
{
    char* s = "CPROGRAMMING";
    int i;
    bool flag = true;
    for (i = 0; i < strlen(s) && flag; i++)
    {
        if (isalpha(s[i]) && isupper(s[i]))
            flag = true;
        else
            flag = false;
    }
    if (flag)
        printf("A string contains only uppercase and alphabet letters\n");
    return 0;
}

答案 2 :(得分:1)

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

int main (int argc, char* argv[])
{
    (void) argc;
    (void) argv;

    const char* s = "CPROGRAMMING";
    bool upper_case = true;
    for (int i = 0; i<strlen(s) && upper_case ; i++)
    {
        if (!isalpha(s[i]) || !isupper(s[i]))
        {
            upper_case = false;
        }
    }

    if (upper_case)
    {
        printf("A string contains only uppercase and alphabet letters\n");
    }

    return 0;
}

修正:

  • 包含正确的标题。
  • 使用正确的bool类型。
  • 清除布尔逻辑。
  • 修正了代码格式。
  • 正确声明指向字符串文字的指针。
  • 明确表示不使用main的参数。