|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目如下:1. 拷贝字符串 —— strcpy 和 strncpy 函数
基础要求:
使用 fgets 函数读取用户输入的字符串(英文)并存储到字符数组 str1 中,并利用指针,将 str1 中的字符串拷贝到字符数组 str2 中
问题是这样写跑不出结果 如图片所示 不知道为什么 求大佬指点迷津
- #include <stdio.h>
- #define MAX 1024
- int main() {
- char str1[MAX];
- char str2[MAX];//用于存储从str1复制过来的数据
- char *st1 = str1, *st2 = str2;
- printf("请输入一个字符串:");
- fgets(str1, MAX, stdin);
- printf("现在开始拷贝---------\n");
- printf("----拷贝完成-----\n");
- printf("----现在str2的内容是:-----\n");
- while ((*st2++ = *st1++) != '\0');
- printf("%s", st2);
- return 0;
- }
复制代码
根据您提供的代码,问题可能出在最后输出 `st2` 的内容时。在拷贝字符串结束后,指针 `st2` 已经指向了字符串末尾的空字符 '\0',因此直接输出 `st2` 将不会输出任何内容。
为了正确输出 `str2` 中的内容,您可以使用指针 `st2` 指向 `str2` 的开头,然后进行输出。
以下是已经修正的代码:
- #include <stdio.h>
- #define MAX 1024
- int main() {
- char str1[MAX];
- char str2[MAX]; // 用于存储从str1复制过来的数据
- char *st1 = str1, *st2 = str2;
- printf("请输入一个字符串:");
- fgets(str1, MAX, stdin);
- printf("现在开始拷贝---------\n");
- while ((*st2++ = *st1++) != '\0')
- ;
- printf("----拷贝完成-----\n");
- printf("----现在str2的内容是:%s-----\n", str2);
- return 0;
- }
复制代码
求最佳答案
|
|