使用 while 循环和数组时需要的基本解释

Basic explanation needed while using while loops and arrays

// ConsoleApplication27.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"
#include "stdio.h"  
#include <string.h>

void main()
{
char couples[5][50] = { "John Nora", "Paul Kathy", "Tom Claire", "Martin Mary", "Tony Teresa" };
char male[5][51];
char female[5][51];
int i;
int j = 0;

printf("Males: ");
for (i = 0; i < 5; i++)
{
    while (couples[i][j] != ' ')
    {
        male[i][j] = couples[i][j];
        j++;
    }
    male[i][j] = '[=11=]';
    puts(male[i]);
    j = 0;
}       
printf("\n");


}

你好,我实际上是在尝试打印所有男性名字,然后打印女性名字(我还没有做那部分)。下面的代码确实有效,但我发现很难理解它是如何工作的。比如,我不明白它说的那部分 while(couples[I][j] != ' ')。如果我试图通过 space 标记拆分字符串,为什么它不等于 space。我将不胜感激人们可能提供的任何帮助和解释!谢谢!

'couples' 的每一行都可以被视为一个字符串(即字符数组),由两个名字组成——一个男性,一个女性——由一个 space 字符分隔。 'while' 循环将一对男性的名字复制到单独的数组 'male' 中,一次一个字符。 'while' 循环的目的是不断复制字符 直到遇到 分隔符 space ,然后放入 '\0' 以标记结束复制的男性姓名字符串。但是 'while' 表示 'do this as long as some condition is true',所以 你想要的条件 是 space 不是现在正在查看的角色。在'couples'的第一行执行你脑子里的代码,像这样:

a) i=0 and j=0 and enter the 'while' loop:
b) couples[i][j] = 'J'.  Is 'J' != ' ' ? --> YES, copy 'J' to males[0][0], increment j
c) couples[i][j] = 'o'.  Is 'o' != ' ' ? --> YES, copy 'o' to males[0][1], increment j
d) couples[i][j] = 'h'.  Is 'h' != ' ' ? --> YES, copy 'h' to males[0][2], increment j
e) couples[i][j] = 'n'.  Is 'n' != ' ' ? --> YES, copy 'n' to males[0][3], increment j
f) couples[i][j] = ' '.  Is ' ' != ' ' ? --> NO, copy '[=10=]' to males[0][4], reset j to 0