小编Soh*_*ine的帖子

如何以字节为单位获取字符串大小?

正如标题所暗示的,我的问题是如何获得字符串的大小C.sizeof如果我在没有malloc它的函数中声明它(字符串),那么使用它是否合适?或者,如果我已将其声明为指针?如果我用它初始化malloc怎么办?我想做一个详尽的回复.

c arrays sizeof

25
推荐指数
4
解决办法
18万
查看次数

scanf() 和 printf() 中的字符串变量名称前的与号还是没有与号?

我使用的编译器是 Dev C++ 5.11。TDM-GCC 4.9.2 32 位调试。C99 模式。

1.

 char str1[100], str2[100];
 scanf("%s %s", &str1, &str2);
 printf("%s %s", &str1, &str2);
Run Code Online (Sandbox Code Playgroud)

2.

 char str1[100], str2[100];
 scanf("%s %s", &str1, &str2);
 printf("%s %s", str1, str2);
Run Code Online (Sandbox Code Playgroud)

3.

 char str1[100], str2[100];
 scanf("%s %s", str1, str2);
 printf("%s %s", str1, str2);
Run Code Online (Sandbox Code Playgroud)

每个代码都有效。为什么?我很困惑。

c string printf scanf

3
推荐指数
1
解决办法
657
查看次数

当用户按下Enter键时,如何防止scanf()终止?

如果按下输入键,scanf()此后停止输入。我尝试了很多方法:将数据更改为字符串,并将其与null进行比较,与ASCII进行比较。但是,我无法阻止scanf用户按下Enter键时终止。

c scanf

1
推荐指数
1
解决办法
780
查看次数

奇怪的情况 - 要求输入100位数字

我需要制作一个可以输入最多100位数字的程序.没有标准的int数据类型就能做到这一点!我从未遇到过这种奇怪的情况.

我根本得不到它.我该怎么解决这个问题?

我正在研究的问题是:

将给出一个整数,并且您必须创建一个程序来确定它是偶数还是奇数.

输入规格

在第一行中,将有一个整数T表示测试用例的数量.在以下T行中,将给出非负整数.该号码最多可以包含100位数字.

输出规格

对于给定的每个整数,您将必须打印它是奇数还是作为输出.

任何人都可以指导我如何解决问题(如果甚至可以这样做)?

c

-5
推荐指数
1
解决办法
1894
查看次数

为什么字符串长度应该加上它在 C 中的容量?

您的字符串长度应该比您希望它能够容纳的最大字符数多一。足够合乎逻辑:字符串以NULL字符结尾。

这是大多数新手都会得到的非常笼统的建议。但是,随着我在编程方面的成长,现在似乎不太正确。

任何类型数组的索引,无论int还是char,都从0. 因此,大多数数组的最大索引值比其数值小 1。它与字符串相同,但由于它在末尾有一个额外的字符,因此它会增加 1。因此,字符串长度与其中的字符数相同。


要查看我是否正确,请参阅此代码段:

char str[9];
scanf("%s", str);
printf("%d", strlen(str));
Run Code Online (Sandbox Code Playgroud)

使它成为一个成熟的程序,然后运行它。键入123456789,保证 9 个字符的长文本,然后查看结果。它可以容纳字符串,果然,字符串长度是9.


我什至亲眼目睹了许多专家程序员说字符串大小应该加上其容量。这个建议在很大程度上是一个神话,还是我在某个地方出错了?

编辑

假设我想创建一个Arr可以容纳x多个元素的整数数组。Arr的最后一个元素的索引值将小于 1,x因为索引值开始于0并且不是1。所以,它的长度是x-1

那你怎么声明呢?我是这样做的:int Arr[x-1];。我不认为这有任何问题。

现在,如果Arr是一个char类型数组(即字符串),则 的长度Arr将比其int对应的长度多一,因为它在末尾有一个额外的 NULL 字符。这将最终为:(x-1)+1=x

代码来证明这一点

那么为什么这次声明必须是,char Arr[x+1]而不是简单的char Arr[x]

c string indexing

-8
推荐指数
2
解决办法
3360
查看次数

标签 统计

c ×5

scanf ×2

string ×2

arrays ×1

indexing ×1

printf ×1

sizeof ×1