我简单的C程序崩溃了

时间:2016-05-10 21:31:49

标签: c variables crash

我正在尝试使用一个像“facebook”这样的词的变量。然而,我不能轻易地在C中使用它。而不是使用累人的方式(我做了但它太长了,没有必要这样做。)我以为我可以用一个像123456789等的浮点替换“facebook”。我的代码是这样的:

printf("Enter the number.\n");

scanf("%f", website);

if(website==32463774)
{
    printf("You wrote facebook.");
}

当程序在打印“输入数字”后进入此scanf行时,它会崩溃。我做错了什么?

2 个答案:

答案 0 :(得分:2)

我尝试了你的代码,但我认为你只是分享了它的模式。

scanf("%f", &website);

也许这是你的程序崩溃的原因。 但很容易就可以将字符串存储在char类型的变量中。

我尝试将值变量存储为网站变量中的字符串。

我的代码如下所示:

//The stored string
char website[15];
printf("Enter the website:\n");
scanf("%s", website);

printf("The stored website: %s\n", website);

答案 1 :(得分:1)

scanf()获取您要写入的变量的地址,而不是变量本身。

这就是你想要的:

scanf("%f", &website);

在引擎盖下,地址和整数几乎相同。它们根据实施情况而有所不同,但在一天结束时,它们都是一定长度的数字。长度可能不同,但它们只是数字。这就是编译器为什么不为此大喊大叫的原因;它确实知道你可能不想这样做,但它相信你知道自己在做什么并且让你无论如何都要这样做。

地址是内存中某物的位置。 C函数可以获取某些东西的地址,去那里,修改它,然后返回,允许调用函数返回到该地址(调用函数已经知道)并获得被调用者放置的任何内容。大多数较新的语言会让你传入数据,然后通过返回它来取回它,但是C不喜欢这样做,所以它有地址。

想象一下,你有一个破纪录的播放器(你想要改变你的变量)。一种较新的语言会说你去看修理工(功能),给他做唱机(把它作为参数传递),然后他给你(返回)固定的唱机,你离开。但是C不能拿起整个唱片公司。所有C都可以随身携带带有街道地址的便利贴。所以C所做的就是给修理工带来记录播放器在便利贴上的地址。修理工去了房子,修理了唱机,然后又回到打电话给他的那个人那里,然后说道。为了获得唱机,呼叫者回到家里并在那里使用它,现在已经修好了。

地址是地址,记录播放器是变量的值。 scanf()想要一个地址,所以它可以将数字放在一个房子里,你可以在以后得到它。你给了它变量。你把它给了唱机。修理工(功能)期待粘滞便笺,所以他只是试图在某处找到写在唱机上的地址。他找到序列号,然后到镇上寻找那个地址。当然,没有这样的地址;他只是四处寻找,渴望解渴。程序崩溃了。

长话短说,给scanf()一个地址。

另外,我认为你不需要在这里使用floatint就足够了。

相关问题