C语言分析(关于指针,大神帮看看)

Dream1018 lin 2021-04-08 11:20:07
其实题目挺简单,就是字符串连接,但我没有用连接函数,我突发奇想,想试试用指针来做,结果居然成了,
这让对指针一知半解的我有点惊奇,我尝试着讲讲我不成熟的想法,请大佬们帮我分析分析,看看我的理解是否有哪些不对的地方。

下面是我的代码

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
void main()
{
char a[1024],*c;
gets(a);
int len=0;
len=strlen(a);
c=&a[len];
gets(c);
puts(a);
}

我的想法就是:在第一次接受到字符串a之后,不再设立一个新的字符串b,而是利用指针c,
指针c的地址是:通过gets()后的a的结束处,应该会默认用'\0'替换掉'\n',而我就是将'\0'的地址
赋值给指针c,并且从指针c所指向的地址开始,继续gets(),这相当于就是继续在字符数组a中进行
接受,并且接收到原来接收的字符串的后边,在最后用puts()统一打印出来,我不知道别人是否有
和我类似的方法,不过这个方法确实是我突发奇想想到的,尝试着敲敲,没想到真的实现了。

还请大佬们帮我看看,看看我对指针是否还有什么理解不够的地方。拜托了!
@qzjhjxj @自信男孩
...全文
176 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
源代码大师 2021-05-03
  • 打赏
  • 举报
回复
C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html
qzjhjxj 2021-04-09
  • 打赏
  • 举报
回复
原型: char * gets ( char * str ); 功能:通过标准输入(stdin)读入字符并存储到C类型的字符串,当检测到换行符或者文件结束符时停止读入。换行符和文件结束符不读入字符串中。'\0'自动添加到字符串的最后。 int puts(const char *string) 功能 puts()函数用来向标准输出设备屏幕输出字符串并换行。具体是把字符串输出到屏幕上,将‘\0’转换为回车换行。 调用方式是:puts(str)。其中str是字符串数组名或者字符串指针。实际上,数组名就是指针。 1、puts()只能输出字符串,不能输出数值或者进行格式转换,即不能要求输出格式增加空格、换行(指的是输出内容的中间进行换行)等要求; 2、可以将字符串直接写入puts()。如:puts("hello world"); 3、puts()和 printf的用法一样,puts()函数的作用与语句“printf("%s\n",s);的作用相同。注意:puts在输出字 符串后会自动输出一个回车符。
自信男孩 2021-04-09
  • 打赏
  • 举报
回复
应该会默认用'\0'替换掉'\n'这句有问题吧,不是替换,而是'\n'不会加入到你提供的缓存里~
qzjhjxj 2021-04-09
  • 打赏
  • 举报
回复
深入学习,脑洞大开是非常幸福的事情
Dream1018 lin 2021-04-08
  • 打赏
  • 举报
回复
呃 我还有几个问题: 1、定义了字符数组后例如 char b[1024]; 如果不对其进行初始化,那么它的各元素的值是随机值还是 '\0' ? 2、gets() 在对一个字符串赋值之后是不是会默认在该字符串末位加上 '\0' ? 3、puts() 打印结束的标志是什么? 望大佬们在百忙之中能够解答一下小弟的疑惑。。。@qzjhjxj @自信男孩

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧