我在理解如何将字符串读入结构成员数组时遇到问题。我有一个名为“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/