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

下面给出的代码在我的IDE上可以正常使用。但是,当我在codeforces上提交此文件时,出现了指向sprintf行的错误。

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

我用sprintf代替了strcat来连接两个数组,这是从stackoverflow答案中建议的。 但这给了我同样的错误。

char a[101],b[101],c[201],d[300];
fgets(a,101,stdin);
fgets(b,stdin);
fgets(c,201,stdin);
// strcat(d,a);
sprintf(d,"%s%s",d,a);
iCMS 回答:未初始化的值用法,使用sprintf或strcat时出错

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

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

,

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

由于您尚未在d中添加任何内容,因此无需将其串联。只需使用astrcpy()的内容复制到其中即可。

strcpy(d,a);

此外,即使您已初始化d,也无法使用

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

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

,

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

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

char d[300] = {0};

将同时修复strcat和sprintf

本文链接:https://www.f2er.com/2148462.html

大家都在问