C编程,绝对初学者指南-第19章,strcat()函数代码不能正常工作
在C编程-绝对初学者指南第19章示例2中,使用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
#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。你应该找到一个有经验的程序员写的文本。谢谢。它解决了问题。不要发布截图或链接!以文本形式发布文本。