【问题标题】:Getting problem copying one string variable to another string variable in c programming在c编程中将一个字符串变量复制到另一个字符串变量时遇到问题
【发布时间】:2021-03-04 09:59:59
【问题描述】:
#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 :

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

【问题讨论】:

    标签: c loops for-loop copy c-strings


    【解决方案1】:

    在这个for循环中

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

    变量 i 被初始化为 0。

    i = 0;
    

    所以这个条件

    i != '\0';
    

    立即被评估为逻辑假。

    看来你的意思

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

    你可以用这个代码sn-p替换

    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 )
    

    【讨论】:

      【解决方案2】:

      “for”循环中的条件应该是 Word1[i] != '\0'

      【讨论】:

        猜你喜欢
        • 2020-09-17
        • 1970-01-01
        • 2022-11-30
        • 1970-01-01
        • 2018-09-18
        • 2012-05-09
        • 2022-10-17
        • 2019-11-08
        • 2020-12-07
        相关资源
        最近更新 更多