C获取差分字符串和整数

C获取差分字符串和整数,c,C,嗨,我是C编程新手,目前我启动了获取用户输入的简单应用程序,现在我如何从用户那里获取输入并区分用户输入是包含字符串、整数还是两者的组合 我尝试了以下方法: #include <stdio.h> #include <stdlib.h> #include <ctype.h> int main(int argc, char * argv[]) { char * s = "CPROGRAMMING"; int i; boolean flag =

嗨,我是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;
}
#包括
#包括
#包括
int main(int argc,char*argv[])
{
char*s=“CPROGRAMMING”;
int i;
布尔标志=真;
对于(i=0;,i
但它似乎无法找到正确的输入。我在这里遗漏了什么?

一些问题:

  • 要获取用户输入,请使用
    scanf
  • C没有
    布尔值
    ,你是说
    int
  • 你的循环是多余的,你只检查最后一个字母——好吧,你检查了所有字母,但是当你上次设置标志时,只考虑最后一个字母。您可以在需要时使用
    中断
    从循环中断执行
  • 循环中的条件有一个杂散的
    • 一些问题:

      • 要获取用户输入,请使用
        scanf
      • C没有
        布尔值
        ,你是说
        int
      • 你的循环是多余的,你只检查最后一个字母——好吧,你检查了所有字母,但是当你上次设置标志时,只考虑最后一个字母。您可以在需要时使用
        中断
        从循环中断执行
      • 循环中的条件有一个杂散的

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

          #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;
          }
          
          #包括
          #包括
          #包括
          #包括
          #包括
          int main(int argc,char*argv[])
          {
          char*s=“CPROGRAMMING”;
          int i;
          布尔标志=真;
          对于(i=0;i
          您的代码有一些语法问题

          #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;
          }
          
          #包括
          #包括
          #包括
          #包括
          #包括
          int main(int argc,char*argv[])
          {
          char*s=“CPROGRAMMING”;
          int i;
          布尔标志=真;
          对于(i=0;i
          #包括
          #包括
          #包括
          #包括
          int main(int argc,char*argv[])
          {
          (无效)argc;
          (无效)argv;
          const char*s=“CPROGRAMMING”;
          bool大写字母=真;
          对于(int i=0;i
          #包括
          #包括
          #包括
          #包括
          int main(int argc,char*argv[])
          {
          (无效)argc;
          (无效)argv;
          const char*s=“CPROGRAMMING”;
          bool大写字母=真;
          

          对于(int i=0;i什么是
          boolean
          ?!它是如何失败的,编译错误?这里有什么问题?什么是失败的?是的,布尔返回一个错误,因为它在C中不存在。查看
          @Omnifarious C的类型是
          \u Bool
          。大多数人更喜欢使用stdbool.h中的宏
          Bool
          ,它扩展为
          \u Bool
          at是
          布尔值
          ?!它是如何失败的,编译错误?这里的问题是什么?失败的原因是什么?是的,布尔值返回一个错误,因为它在C中不存在。查看
          @Omnifarious C的类型是
          \u Bool
          。大多数人更喜欢使用stdbool.h中的宏
          Bool
          ,它扩展为
          \u Bool>。您缺少ode>
          使用计算结果为
          \u bool
          的宏
          bool
          。not works仍返回错误测试。c:在函数“main”中:测试。c:10:5:错误:未知类型名称“bool”测试。c:10:17:错误:“true”未声明(首次在此函数中使用)test.c:10:17:注意:对于在测试中出现的每个函数,每个未声明的标识符只报告一次。c:16:20:错误:“false”未声明(首次在此函数中使用)虽然这不是一个语法错误,但我认为<代码>标志==true/COD>是可怕的样式。它应该只是<代码>标志<代码>。使用宏在<代码> <代码>中,IMO更容易和自然,但是我想这也是有效的。@ char s是如何包含整数的?您缺少“代码> <代码>使用宏<代码>布尔O/COD> >计算<代码>Bool
          。not works仍然返回错误测试。c:在函数“main”中:测试。c:10:5:错误:未知类型名称“Bool”测试。c:10:17:错误:“true”未声明(首次在此函数中使用)测试。c:10:17:注意:每个未声明的标识符对于在测试中出现的每个函数只报告一次。c:16:20:错误:“false”未声明(首先在这个函数中使用),虽然这不是一个语法错误,但是我认为代码>旗标=真/<代码>是可怕的样式。它应该只是<代码>标志<代码>。使用宏在<代码> <代码>是IMO更容易和自然的,但是我猜这也是有效的。@ mm。char s是如何包含整数的?我如何用GETSH()来解析用户输入?对于char*s?buddy,您的代码在函数“main”中出现错误:test.c:在函数“main”中:test.c:13:5:error:“for”循环初始声明仅在C99模式测试中允许。c:13:5:注意:使用选项-std=C99或-std=gnu99编译code@SaraswathiApavoo您必须使用真正的C编译器进行编译。如果您使用的是GCC,请按照它的说明,使用gcc code.c-std=c99
          @SaraswathiApavoo至于get,它是一个非常糟糕的函数,已从c语言中删除,不要使用它。如果您对用户输入有单独的问题,请在堆栈溢出上发布一个新问题。当整数超过char*s时,它会重复如下:字符串包含整数字符串包含整数一个字符串包含整数一个字符串包含整数我怎么能只决定一次