如何在不使用<string.h>
的情况下使C中的两个字符串相等?我想到的最明显的方法是在下面,但是会引发无效的初始化错误。
例如:
char str1[100] = "This is a string";
char temp[100] = str1;
答案 0 :(得分:2)
您不能使用数组来初始化另一个数组。而且您也不能在数组之间使用赋值。
唯一的方法是从一个数组到另一个数组进行显式复制。对于以空字符结尾的字节字符串,我们通常通过strcpy
进行操作:
char str1[100] = "This is a string";
char temp[100];
strcpy(temp, str1);
要获得strcpy
的正确声明,您应该包含<string.h>
。没有办法解决(除非您要编写自己强烈建议反对的strcpy
类函数)。
您当然也可以使用memcpy
复制整个数组,包括所有未初始化的内容,但是它也在<string.h>
中声明。
答案 1 :(得分:2)
您可以执行以下操作。不要初始化temp
。只需将指针指向字符,直到在str1中命中空终止符即可。这将比strcpy实施效率低。
char *p = str1;
char *q = temp;
while (*p)
*q++ = *p++;
*q = '\0';
答案 2 :(得分:0)
如果您想不使用<string.h>
将一个字符串复制到另一个字符串,则必须从str1
的第一个位置开始运行循环,直到找到'\0'
为止,然后将每个元素复制到{ {1}}。不要忘记在temp
的末尾添加一个'\0'
,否则在打印时会看到一些垃圾值。
temp