Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C编程,绝对初学者指南-第19章,strcat()函数代码不能正常工作_C_Strcat - Fatal编程技术网

C编程,绝对初学者指南-第19章,strcat()函数代码不能正常工作

C编程,绝对初学者指南-第19章,strcat()函数代码不能正常工作,c,strcat,C,Strcat,在C编程-绝对初学者指南第19章示例2中,使用strcat()函数的程序: #include <stdio.h> #include <string.h> int main() { char city[15]; char st[3]; char fullLocation[18]; puts("What town do you live in? "); gets(city); puts("What state do you

在C编程-绝对初学者指南第19章示例2中,使用strcat()函数的程序:

#include <stdio.h>
#include <string.h>

int main()
{
    char city[15];
    char st[3];
    char fullLocation[18];

    puts("What town do you live in? ");
    gets(city);

    puts("What state do you live in? (2-letter abbreviation)");
    gets(st);

    strcat (fullLocation, city);
    strcat (fullLocation, ", ");
    strcat (fullLocation, st);

    puts("\nYou live in ");
    puts(fullLocation);

    return 0;

}
#包括
#包括
int main()
{
查尔城[15];
char-st[3];
字符完整位置[18];
“你住在哪个镇?”;
获取(城市);
puts(“您居住在哪个州?(两个字母缩写)”;
获取(st);
strcat(完整位置,城市);
strcat(完整位置,“,”;
strcat(全位置,st);
放入(“\n您所居住的”);
放置(完整位置);
返回0;
}
编译此程序时,它会显示以下内容:

编译器在控制台窗口中的输出:


有什么想法或解释为什么它会显示这些奇怪的字符吗?

我相信这是因为您没有初始化变量fullLocation、st和city,并且您的代码被垃圾数据欺骗了


尝试将它们等同于
={0}

我相信这是因为您没有初始化变量fullLocation、st和city,并且您的代码被垃圾数据欺骗了

尝试将它们等同于此处描述的
={0}

strcat将源复制到目标,从目标字符串中的空字符开始。 在您的情况下,fullLocation中没有空字符。 你可以加上

fullLocation[0]='\0';
或者用strcpy替换第一个strcat,该strcpy复制时不会在目标位置查找空字符

,如下所述 strcat将源复制到目标,从目标字符串中的空字符开始。 在您的情况下,fullLocation中没有空字符。 你可以加上

fullLocation[0]='\0';

或者用strcpy替换第一个strcat,该strcpy复制时不在目标位置查找空字符

尝试用空字符串初始化
fullLocation
。在C中,
fullLocation
是垃圾,因为您没有初始化它。strcat将字符复制到从空终止符开始的字符串中。但是那里没有空终止符。要使
fullLocation
成为长度为零的字符串,请将第一个字符设置为0:
fullLocation[0]=0或在声明中将其初始化为“”或{0}。我认为您不应该从绝对初学者编写的指南中学习C。你应该找到一个有经验的程序员写的文本。谢谢。它解决了问题。不要发布截图或链接!以文本形式发布文本。尝试使用空字符串初始化
fullLocation
。在C中,
fullLocation
是垃圾,因为您没有初始化它。strcat将字符复制到从空终止符开始的字符串中。但是那里没有空终止符。要使
fullLocation
成为长度为零的字符串,请将第一个字符设置为0:
fullLocation[0]=0或在声明中将其初始化为“”或{0}。我认为您不应该从绝对初学者编写的指南中学习C。你应该找到一个有经验的程序员写的文本。谢谢。它解决了问题。不要发布截图或链接!以文本形式发布文本。