c – 使用指针数学而不是数组索引

c – 使用指针数学而不是数组索引,第1张

概述我正在尝试解决我的C编程书中发现的问题. #include <stdio.h>char *f (char s[], char t[], char out[]);int main(void){ char s[] = "ISBN-978-8884981431"; char t[] = "ISBN-978-8863720181"; char out[10]; pri 我正在尝试解决我的C编程书中发现的问题.

#include <stdio.h>char *f (char s[],char t[],char out[]);int main(voID){    char s[] = "ISBN-978-8884981431";    char t[] = "ISBN-978-8863720181";    char out[10];    printf ("%s\n",f(s,t,out));    return 0;}char *f (char s[],char out[]) {    int i;    for (i=0; s[i] == t[i]; i++)    out[i] = s[i];out[i] = '
char *f (char s[],char out[]) {    for (; *(s+=1) == *(t+=1);)            *(out+=1) = *s;    *(out+1) = '
char *orig = out;for ( ; *s == *t ; s++,t++)    *out++ = *s;*out = '';return orig;
'; return out;}
';return &out[0];}

从代码中可以看出,此代码用作返回值& out [0]:这是否意味着完整数组用作返回值?

这是我提出的解决方案,但是当建议的代码返回“ISBN-978-88”时,我的只返回“8”.
数组小于字符串的长度,建议的代码如何在没有任何溢出的情况下工作?
谢谢你的回复.

解决方法 您的代码在副作用上过于激进:= 1 *** 作(通常简称为) *** 作应在复制到输出后应用,而不是在比较之后.

此外,您需要在递增指针之前保存out缓冲区的值,以便您可以返回指向复制字符串开头的指针.

Demo on ideone.

总结

以上是内存溢出为你收集整理的c – 使用指针数学而不是数组索引全部内容,希望文章能够帮你解决c – 使用指针数学而不是数组索引所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1215709.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存