首页 > 解决方案 > 在c编程中将一个字符串变量复制到另一个字符串变量时遇到问题

问题描述

#include<stdio.h>

void main()
{
    char Word1[10], Word2[10];
    int i;
    
    printf("Enter Text : ");
    scanf("%s", Word1);
    
    for (i = 0; i != '\0'; i++)
    {
        Word2[i] = Word1[i];
    }
    
    Word2[i] = '\0';
    printf("The text is : %s\n", Word2);
}

所以在这里我试图将'Word1'复制到'Word2'变量但是当我打印它时

Enter Text : Harsh
The text is :

这已显示(我希望第二行显示'输入文本:')

标签: cloopsfor-loopcopyc-strings

解决方案


在这个 for 循环中

for (i = 0; i != '\0'; i++)

变量 i 初始化为 0。

i = 0;

所以这个条件

i != '\0';

一次被评估为逻辑假。

看来你的意思

 for (i = 0; word1[i] != '\0'; i++)

您可以替换此代码段

int i;
//...
for (i = 0; word1[i] != '\0'; i++)
{
    Word2[i] = Word1[i];
}

Word2[i] = '\0';

对于这个

for ( size_t i = 0; ( word2[i] = word1[i] ) != '\0'; i++ );

或者

size_t i = 0;
while ( ( word2[i] = word1[i] ) ) i++;

这是一个演示程序。

#include <stdio.h>

int main(void) 
{
    char word1[] = "Hello World!";
    char word2[sizeof( word1 )];
    
    size_t i = 0;
    while ( ( word2[i] = word1[i] ) ) i++;  
    
    puts( word2 );
    
    return 0;
}

程序输出为

Hello World!

请注意,根据 C 标准,不带参数的函数 main 应声明为

int main( void )

推荐阅读