c - 在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 :
这已显示(我希望第二行显示'输入文本:')
解决方案
在这个 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 )
推荐阅读
- javascript - distinctUntilChanged 在结果中创建更改
- unicode - UTF-16如何实现自同步?
- entity-framework-core - Entity Framework Core 2.1 IdentityUser IdentityDbContext<> 获取 IdentityUserLogin 需要定义主键
- php - 如何使用 PHP 解码带有注释的 JSON 文件?
- android - Android返回false onTouchEvent
- sql - 如何比较重复 item_number 的日期结果?我正在寻找日期不早于 2016 年 9 月 30 日的结果
- angular - 模板表达式评估频率
- excel - 我的索引匹配不适用于小于表中的值
- android - 何时停止音乐播放器中的音乐
- python - Python 请求并单击按钮