C 语言字符串复制程序

如何编写一个不使用 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;
}
C program to Copy String without using strcpy 1

在此字符串复制程序中,我们声明了两个大小为 100 的字符数组。接下来的两个语句要求用户输入任何单词,并将用户输入的字符数组赋给变量。请参考 strcpy 函数。

下一行,我们使用 For 循环 迭代和复制 字符串

用户输入 = “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

评论已关闭。