繁体   English   中英

未初始化的值使用,使用 sprintf 或 strcat 时出错

[英]uninitialized value usage, error while using sprintf or strcat

下面给出的代码在我的 IDE 上完全可以正常工作。 但是当我在codeforces上提交这个时,我收到一个指向sprintf行的错误。

可能,解决方案执行时出现错误“未初始化的值使用”

我使用 sprintf 而不是strcat来连接两个 arrays ,如stackoverflow答案所建议的那样。 但它给了我同样的错误。

char a[101],b[101],c[201],d[300];
fgets(a,101,stdin);
fgets(b,101,stdin);
fgets(c,201,stdin);
// strcat(d,a);
sprintf(d, "%s%s",d,a);

您正在将未初始化的变量d写入位置d 这没有任何意义。 也许你打算做sprintf(d,"%s",a); ?

在这种情况下,您不需要初始化d ,但如果您使用strcat ,则必须将d中的第一项初始化为\0

如果您已经初始化了两个字符串,则只能使用strcat()

由于您尚未将任何内容放入d中,因此您无需连接到它。 只需使用strcpy()a的内容复制到其中即可。

strcpy(d, a);

另外,即使你已经初始化了d,你也不能使用

sprintf(d, "%s%s",d,a);

如果它也是源字符串之一,则使用与sprintf()的目标相同的字符串是无效的。

您尚未初始化 d ,因此它可能没有 '\0' 字符。

strcat 搜索数组中的第一个 0,然后从那里开始连接。 如果它找不到 0,它会读取数组末尾的内容。

char d[300] = {0};

将为 strcat 和 sprintf 修复它

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM