如何编写一个不使用 strcpy 函数的 C 语言字符串复制程序。我们可以通过多种方式实现,但我们将讨论四种不同的方法:使用 For 循环、While 循环、函数和指针。
C 语言不使用 strcpy() 复制字符串程序
此字符串复制程序允许用户输入任何字符数组。接下来,它将使用 For 循环遍历字符串中的每个字符,并将它们复制到另一个字符数组中。
#include <stdio.h>
#include <string.h>
int main()
{
char Str[100], CopyStr[100];
int i;
printf("\n Please Enter any String : ");
gets(Str);
for (i = 0; Str[i]!='\0'; i++)
{
CopyStr[i] = Str[i];
}
CopyStr[i] = '\0';
printf("\n String that we coped into CopyStr = %s", CopyStr);
printf("\n Total Number of Characters that we copied = %d\n", i);
return 0;
}

在此字符串复制程序中,我们声明了两个大小为 100 的字符数组。接下来的两个语句要求用户输入任何单词,并将用户输入的字符数组赋给变量。请参考 strcpy 函数。
用户输入 = “Good”
第一次迭代:for (i = 0; Str[0]!=’\0′; 0++)
条件为 TRUE,因为 Str[0] = G
CopyStr[i] = Str[i]
CopyStr[0] = Str[0] = G
第二次迭代:for (i = 1; Str[1]!=’\0′; 1++)
条件为 TRUE,因为 Str[1] = o
CopyStr[1] = o
第三次迭代:for (i = 2; Str[2]!=’\0′; 2++)
条件为 TRUE,因为 Str[2] = o
CopyStr[2] = o
第四次迭代:for (i = 3; Str[3]!=’\0′; 3++)
条件为 TRUE,因为 Str[3] = d
CopyStr[3] = d
第五次迭代:for (i = 4; Str[4]!=’\0′; 4++)
条件为 False。因此,将退出 For 循环
最后的 编程 printf 语句将在 CopyString 字符数组中打印消息。
printf("\n String that we coped into CopyStr = %s", CopyStr);
使用 While 循环复制字符串的程序
此字符串复制程序与上面的相同,但这次我们使用的是 While 循环(只需将 For 循环替换为 While 循环)。
#include <stdio.h>
#include <string.h>
int main()
{
char Str[100], CopyStr[100];
int i = 0;
printf("\n Please Enter any Sentence : ");
gets(Str);
while(Str[i]!='\0')
{
CopyStr[i] = Str[i];
i++;
}
CopyStr[i] = '\0';
printf("\n Copied into CopyStr = %s", CopyStr);
printf("\n Total Number of Characters that we copied = %d\n", i);
return 0;
}
Please Enter any Sentence : Tutorial Gateway
Copied into CopyStr = Tutorial Gateway
Total Number of Characters that we copied = 17
使用函数复制字符串的 C 程序
此 程序 与上面相同。但是,这次我们使用 函数 概念将逻辑与 main 分开。
#include <stdio.h>
#include <string.h>
void CopyString(char str1[], char str2[], int index);
int main()
{
char Str[100], CopyStr[100];
printf("\n Please Enter any text : ");
gets(Str);
CopyString(Str, CopyStr, 0);
printf("\n Original = %s", Str);
printf("\n Copied into CopyStr = %s", CopyStr);
return 0;
}
void CopyString(char str1[], char str2[], int index)
{
str2[index] = str1[index];
if(str1[index] == '\0')
{
return;
}
CopyString(str1, str2, index + 1);
}
Please Enter any Sentence : C Programming Tutorial
Original = C Programming Tutorial
Copied into CopyStr = C Programming Tutorial
使用指针复制字符串
此复制程序与上面相同,但这次我们使用 指针 将一个字符串复制到另一个字符串。
#include <stdio.h>
#include <string.h>
void CopyString(char* st1, char* st2);
int main()
{
char St[100], CopyStr[100];
printf("\n Please Enter any Text : ");
gets(St);
CopyString(St, CopyStr);
printf("\n Original = %s", St);
printf("\n Copied into CopyStr = %s", CopyStr);
return 0;
}
void CopyString(char* st1, char* st2)
{
int i = 0;
for (i = 0; st1[i]!='\0'; i++)
{
st2[i] = st1[i];
}
st2[i] = '\0';
}
Please Enter any Sentence : C programs
Original = C programs
Copied into CopyStr = C programs
评论已关闭。