【发布时间】:2022-01-05 13:32:04
【问题描述】:
我在 C 中有一个字符串数组:
char taula[15][15];
此表中填满了文件的句子。一个单词最多可以有 15 个字母。一个短语最多可以有 15 个单词。这是它的内容:
{ "may", "the", "force", "be", "with", "you." }
现在,我需要更改单词的顺序,使它们不在此顺序(但这对问题无关紧要)。
我是 C 的新手,但我的大脑是这样的(这就是我在 Java 中会做的):
char aux[15] = "";
char frase_nova[15][15];
for(i=0;i<15;i=i+2) {
aux = taula[i];
taula[i] = taula[i+1];
i++;
}
我创建一个辅助变量来存储一个单词,并创建一个新数组来存储无序的短语。我将第一个元素存储到 aux 变量中。将第 0 个元素分配给第 1 个,最后我将 aux 分配给第 0 个元素,依此类推。这样我应该得到这个短语:
the may be force you. with
这导致我出错,所以我搜索了原因,并使用 strcpy 将该代码更改为该代码:
strcpy(aux,frase_nova[i+1]);
strcpy(frase_nova[i+1],frase_nova[i]);
strcpy(frase_nova[i],aux);
printf("%s",frase_nova[i]);
但这给我带来了一个奇怪的结果。指针和数组或其他任何东西正在发生我不明白的事情。
the E�Ube you.��aE�URE�U
所以我想知道如何按照我想要的顺序 ([i]) 用原始多维 char 数组的值填充新的多维 char 数组。
【问题讨论】:
-
字符串是数组。不能使用单个赋值语句复制数组。使用 string.h 中的字符串函数
-
@stark OP 似乎已经意识到了这一点。