我在理解如何将字符串读入结构成员数组时遇到问题。我有一个名为“customer”的结构和一个名为“char last_name[20]的成员。我提示用户输入他的姓氏,该姓氏将存储在“last_name[20]变量中。条件是我必须使用do…while循环。
代码如下:

void get_customer_info(struct customer *p_customer_start, int customer_num)
{
   struct customer *p_customer;

   for (p_customer = p_customer_start; (p_customer - p_customer_start) <
        customer_num; p_customer++)
   {
      printf("\nCustomer number %d: ", (p_customer - p_customer_start) + 1);

      while (getchar() != NEW_LINE);

      printf("\n   Enter the customer's last name: ");

      // *THIS PART IS THE PROBLEM*
      do
      {
         p_customer->last_name = getchar();
         p_customer->last_name++;
      } while (*p_customer->last_name != NEW_LINE);

   }
   return;
}

问题是,如果不检查last_name[0]算法,则在检查新行之前,该算法会移动到“last_name[1]。是的,必须使用do…while构造(这是一个类)。
我欣赏任何人的想法。

最佳答案

好吧,没有索引的解决方案是;

char *pointer;

/* other code here */
pointer = p_customer->last_name
do {
    *pointer = getchar();
    pointer += sizeof( char );
} while ( *(pointer - sizeof( char ) )!= NEW_LINE );

如果您想确保不超出数组范围…….请不要使用do while=)(我一直都会使用do while=),因为在理解循环条件之前,您必须阅读大量的行(在多嵌套函数中,这不是真正的可读性问题

关于c - C:使用do…while循环将字符串读入结构成员,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4074308/

10-15 06:57