【问题标题】:Using toupper with a structure in C在 C 中使用带有结构的 toupper
【发布时间】:2017-02-21 18:13:05
【问题描述】:

我想做的是让用户输入他们的信息。以状态为例。我需要处理这个状态缩写并将其输出为大写字母。我对如何做到这一点感到困惑,因为我正在使用结构。当我使用我在下面使用的东西时,它告诉我它们不兼容并且不起作用。我应该怎么做。我已经尝试了几乎所有的东西。这是在 C 中。

for (i = 0; i < 3 != '\0'; i++) {
    people[i].state = toupper(people[i].state);
}

【问题讨论】:

  • i &lt; 3 != '\0' 这是什么?
  • toupper() 一次作用于一个角色。很难确定,因为您没有给出结构的定义,但看起来您正试图将其应用于整个字符串。
  • @SouravGhosh 检查i 是否小于3 迄今为止我见过的最奇特的方法。
  • @EugeneSh。没错,但我仍然怀疑那不是该代码的意图。哎哟。
  • 对于未来的问题,并不是说toupper() 与结构一起使用 没有理由有什么特别之处,toupper() 接受一个字符并返回上它的情况,仅此而已。它不关心角色来自哪里。

标签: c structure toupper


【解决方案1】:

你的意思好像是下面这个

for ( i = 0; i < 3; i++ )
{
    for ( char *p = people[i].state; *p; ++p ) *p = toupper( ( unsigned char )*p );
}

或者如果你有一个结构类型的对象,那么类似

for ( i = 0; i < 3; i++ )
{
    people.state[i] = toupper( ( unsigned char )people.state[i] );
}

甚至

for ( i = 0; i < 3 && people.state[i] != '\0'; i++ )
{
    people.state[i] = toupper( ( unsigned char )people.state[i] );
}

【讨论】:

  • @J.Piquard 这不是标准的 C 函数。
  • 当我把其中任何一个放进去时,它会给我一个错误,上面写着 [Error]: incompatible types in assignment
  • @Drew 什么是人和国家的类型?
  • @vladfromMoscow 它们是结构中的一种字符。我需要将其输出为两个大写字母。
      #include  #include  struct info { char full_name[35];字符地址[50];炭城[25];字符状态 [3];长整数邮编;年龄; } int main() { for (i = 0; i 
                    
                  
                    
                            
                
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-03
  • 2020-09-01
  • 1970-01-01
相关资源
最近更新 更多