在 C 中不使用任何数组表示法来切换字符串
switch strings without using any array notation in C
嗨,我是指针的新手,我正在尝试编写一个函数,在不使用任何数组符号的情况下将一个字符串与另一个字符串切换,完全使用指针。
我有这个函数,它可以工作,但在这个函数中,我使用一个数组表示法。
有没有更简单、更好的方法来做到这一点?谢谢。
void stringtausch(char *eins, char *zwei) {
char first[50], *philfe = first, *one = eins, *two = zwei;
while(*one != '[=10=]') {
*philfe++ = *one++;
}
*philfe = '[=10=]';
while(*two != '[=10=]') {
*eins++ = *two++;
}
*eins = '[=10=]';
philfe = first;
while(*philfe != '[=10=]') {
*zwei++ = *philfe++;
}
*zwei = '[=10=]';
}
嗯,一个更简单的方法是使用 strcpy,但如果您想按照自己的方式进行操作,它会更容易。指针指向数组或单个单元格的第一个单元格地址。你只能这样做:
char * eins = "dogslovecats";
char * zwei = "cats";
stringtausch(&eins, &zwei);
void stringtausch(char ** eins, char ** zwei) {
char * temp;
temp = *eins;
*eins = *zwei;
*zwei = *temp;
}
如果两个字符串的长度相等
void stringtausch(char *eins, char *zwei) {
while ((*eins != '[=10=]') && (*zwei != '[=10=]')) {
char swp;
swp = *zwei;
*zwei++ = *eins;
*eins++ = swp;
}
*zwei = '[=10=]';
*eins = '[=10=]';
}
如果他们不这样做,那是不可能的,除非您在传递指针之前分配足够的 space。我看不出有什么好处,因为你可以
void stringtausch(char **eins, char **zwei) {
char *swp;
swp = *zwei;
*zwei = *eins;
*eins = swp;
}
并调用 stringtausch
stringtausch(&s1, &s2);
嗨,我是指针的新手,我正在尝试编写一个函数,在不使用任何数组符号的情况下将一个字符串与另一个字符串切换,完全使用指针。
我有这个函数,它可以工作,但在这个函数中,我使用一个数组表示法。
有没有更简单、更好的方法来做到这一点?谢谢。
void stringtausch(char *eins, char *zwei) {
char first[50], *philfe = first, *one = eins, *two = zwei;
while(*one != '[=10=]') {
*philfe++ = *one++;
}
*philfe = '[=10=]';
while(*two != '[=10=]') {
*eins++ = *two++;
}
*eins = '[=10=]';
philfe = first;
while(*philfe != '[=10=]') {
*zwei++ = *philfe++;
}
*zwei = '[=10=]';
}
嗯,一个更简单的方法是使用 strcpy,但如果您想按照自己的方式进行操作,它会更容易。指针指向数组或单个单元格的第一个单元格地址。你只能这样做:
char * eins = "dogslovecats";
char * zwei = "cats";
stringtausch(&eins, &zwei);
void stringtausch(char ** eins, char ** zwei) {
char * temp;
temp = *eins;
*eins = *zwei;
*zwei = *temp;
}
如果两个字符串的长度相等
void stringtausch(char *eins, char *zwei) {
while ((*eins != '[=10=]') && (*zwei != '[=10=]')) {
char swp;
swp = *zwei;
*zwei++ = *eins;
*eins++ = swp;
}
*zwei = '[=10=]';
*eins = '[=10=]';
}
如果他们不这样做,那是不可能的,除非您在传递指针之前分配足够的 space。我看不出有什么好处,因为你可以
void stringtausch(char **eins, char **zwei) {
char *swp;
swp = *zwei;
*zwei = *eins;
*eins = swp;
}
并调用 stringtausch
stringtausch(&s1, &s2);