在C中使用带数组的循环 #包括 void main() { 查尔夫妇[3][50]={“保罗·凯西”、“约翰·诺拉”、“马丁·玛丽”}; 丈夫[3][50]; [3][50];; int i=0; int j=0; 出售(“丈夫:”); 对于(i=0;i

在C中使用带数组的循环 #包括 void main() { 查尔夫妇[3][50]={“保罗·凯西”、“约翰·诺拉”、“马丁·玛丽”}; 丈夫[3][50]; [3][50];; int i=0; int j=0; 出售(“丈夫:”); 对于(i=0;i,c,arrays,string,loops,char,C,Arrays,String,Loops,Char,我以前创建过一个类似的程序,它运行得非常好。然而,尽管这确实成功地构建和编译了,但它并没有正确运行。从本质上讲,我试图根据空格字符将情侣分隔成一个单独的字符串。我做错了什么?试试简单的方法。sscanf()函数可以很容易地从字符串中提取数据: #include <stdio.h> void main() { char couples[3][50] = { "Paul Kathy", "John Nora", "Martin Mary" }; char hus

我以前创建过一个类似的程序,它运行得非常好。然而,尽管这确实成功地构建和编译了,但它并没有正确运行。从本质上讲,我试图根据空格字符将情侣分隔成一个单独的字符串。我做错了什么?

试试简单的方法。
sscanf()
函数可以很容易地从字符串中提取数据:

#include <stdio.h>    

void main()
{
    char couples[3][50] = { "Paul Kathy", "John Nora", "Martin Mary" };
    char husbands[3][50];
    char wives[3][50];  
    int i = 0;
    int j = 0;

    puts("Husbands: ");
    for (i = 0; i < 3; i++)
    {
        while (couples[i][j] != ' ')
        {
            couples[i][j] = husbands[i][j];
            j++;
        }
        husbands[i][j] = '\0';
        puts(husbands[i]);
        j = 0;
    }

}
#包括
内部主(空)
{
查尔夫妇[3][50]={“保罗·凯西”、“约翰·诺拉”、“马丁·玛丽”};
丈夫[3][50];
[3][50];;
int i=0;
对于(i=0;i<3;i++)
{
/*提取丈夫和妻子的名字。你知道他们之间用空格隔开*/
sscanf(夫妻[i],%s%s],丈夫[i],妻子[i]);
}
}
原始代码中的问题包括:

  • 夫妇字符串由未初始化的丈夫字符串写入

  • 不提取妻子的名字

  • 这是你的问题:

    #include <stdio.h>
    
    int main(void)
    {
        char couples[3][50] = { "Paul Kathy", "John Nora","Martin Mary" };
        char husbands[3][50];
        char wives[3][50];  
        int i = 0;
    
        for (i = 0; i < 3; i++)
        {
            /* Extract husband and wife names. You know they are separated by a space. */
            sscanf(couples[i], "%s %s", husbands[i], wives[i]);
        }
    }
    

    您正在将
    丈夫分配给
    夫妇
    ,而不是按您需要的相反方式。

    main
    有两个有效签名:
    int main(void)
    int main(int,char**)
    。任何文学教学都应该避免。寻找更好的学习材料,掌握C语言的基本知识就不会那么难了。“它不能正确运行”?它的作用是什么?有关什么是允许的和不允许的详细信息,请参阅。允许使用
    void main()
    的平台数量非常少。您应该解释一下自己在做什么(并删除不应该出现在原始问题中的样板注释)。您还应该解释原始代码有什么问题-为什么不起作用。@JonathanLeffler感谢您的反馈。我已经更新了我的答案。请复习一下。
    couples[i][j] = husbands[i][j];