获取错误的字符串长度
我正在尝试获得字符串的长度,但我得到了错误的价值,它说它只有4个字符.为什么是这样?我是否正确使用sizeof()? #include int main(void) { char *s; int len; s = "hello world"; len = sizeof(s); printf("%d\n", len); } 解决方案 sizeof操作员正在返回指针的大小.如果需要字符串的长度,请使用 strlen 功能. 即使您有一个数组(例如char s[] = "hello world")sizeof运算符将返回错误的值,因为它将返回包括字符串终结者字符的数组的长度. 哦,作为旁注,如果您想要一个字符串指针指向文字字符串,则应将其声明const char *,因为字符串文字是恒定的,无法修改. 其他解决方案 您已将s声明为指针.当应用于指针时,sizeof()返回指针的大小,而不是指向的元素
10 2024-04-22
编程技术问答社区
索引和长度必须是指字符串中的一个位置,在子串中出现错误。
我有一个类似的字符串:2899 8761 014 00:00:00 06/03/13 09:35 G918884770707.我必须从此给定的字符串中取下G918884770707.我知道子字符串的开始,所以我将子字符串的结尾作为整个字符串的长度如下: : No = line.Substring(Start,End); 这里的启动值为39,主字符串的长度为52,所以这是端的值. 这会导致错误: 索引和长度必须参考substring中字符串错误中的位置 如何解决这个问题? 解决方案 您已经将参数误解为 Substring - 它们没有开始和结束(就像在Java中一样),它们是开始和 length . 所以您想要: No = line.Substring(Start, End - Start); 来自文档: 参数 StartIndex 类型:System.Int32 在这种情况下,基因的基于零的起始字符位置. 长度 类
10 2024-04-19
编程技术问答社区
微软文档中的C#字符串.长度
在/a>此代码将返回7个字符 长度属性在这种情况下返回char对象的数量, 不是Unicode字符的数量. string characters = "abc\u0000def"; Console.WriteLine(characters.Length); // Displays 7 我需要一个函数才能返回结果12,因为有12个不同的字符.我可以使用哪个功能? 解决方案 您必须防止编译器对文字的解释.可以使用 @ prefix来完成: var characters = @"abc\u0000def"; 此字符串的Length属性将返回12,但是字符串中不再有实际的Unicode字符. 其他解决方案 C#编译器将用null字节替换\u0000.这意味着,在执行时,您的内存中只有7个字符. 如果您不希望编译器替换特殊字符,则必须首先逃脱后斜线: string characters = "abc\\u0000def"; Console.
6 2024-04-17
编程技术问答社区
为什么strlen()比手动循环以检查无效终止的字符的速度约20倍?
最初的问题收到了不错的收到,并获得了许多低价.因此,我认为我会修改一个问题,以使阅读和希望对看到它的任何人有更多帮助.最初的问题是为什么strlen()比在字符串中手动循环并找到" \ 0"字符快20倍.我认为这个问题是充分建立的,因为我到处都在阅读Strlen()的技术以发现字符串长度本质上是循环的,直到找到一个无效的终止字符'\ 0'.这是对C字符串的普遍批评,原因不止一个.正如许多人指出的那样,属于C库的一部分的功能是由智能程序员创建的,以最大程度地提高性能. 感谢Ilen2,他将我链接到了一种非常聪明的方法,即一次使用位运算符一次检查8个字节,我设法获得了一些东西,该字符串大约要大约说8至15个字符的运行速度比Strlen()快.当字符串大得多时,比strlen()快很多次.例如,奇怪的是,strlen()似乎是线性的,取决于字符串的长度完成.另一方面,无论字符串长度如何,自定义的时间都几乎相同(我测试了几百个).无论如何,我的结果令人惊讶,我对它们进行了优化,但我不知道它
8 2024-04-10
编程技术问答社区
为什么这个计算字符串长度的C程序会出现错误的输出?
我编写了这个程序,该程序接受string作为输入并返回其长度. #include #include #define MAX 100 int main() { char a[MAX]; int len; printf("Enter a string: "); fgets(a, MAX, stdin); len = strlen(a); printf("Length of the string = %d", len); return 0; } 由于函数strlen()不计算null字符,即'\0',为什么我的输出总是比输入string的字符大1个? 例如 - Enter a string: Aryan Length of the string = 6 Process returned 0 (0x0) execution time: 4.372 s Press any
18 2024-04-09
编程技术问答社区
如何使用fgets读取未知长度的输入信息
我应该如何使用fgets()读取长输入,我不完全理解. 我写了这篇 #include #include #include int main() { char buffer[10]; char *input; while (fgets(buffer,10,stdin)){ input = malloc(strlen(buffer)*sizeof(char)); strcpy(input,buffer); } printf("%s [%d]",input, (int)strlen(input)); free(input); return 0; } 解决方案 #include #include #include int main(void) { cha
8 2024-04-06
编程技术问答社区
使用malloc分配时是否包括空字符
我已经使用了C了很长时间了,而且我想查询这个琐碎的问题. 说我想创建一个最多存储1000个字符的字符数组.现在,当我使用malloc进行相同的时,我是否将数组的大小指定为1001个字符[1000个字符 + null]或仅1000个? 另外,假设我遇到了这个问题,那么我怎么能独自找到该解决方案的答案,也许是使用一些测试程序.我了解字符串的大小是计算的,而没有空字符,但是当我分配相同的内存时,我也会考虑到空字符吗? 解决方案 如果您需要该块存储零终端的字符串,则是的,您需要解释malloc()以分配一个额外的字节来存储null末端,malloc() malloc()否则不会为您执行此操作. .如果您打算将字符串长度存储在其他地方,因此您不需要空终止器,而无需分配额外的字节而可以逃脱.当然,无论您是否需要用于字符串的零终止,请不要忘记C库字符串处理功能仅适用于无效的字符串. 其他解决方案 malloc和家庭分配内存中的内存.因此,如果您malloc(1000)您会得
20 2024-04-06
编程技术问答社区
批量获取带有特殊字符的字符串长度
我有一个包含两列文本的文件.使用批处理文件,我想提取文本的第二列并获取字符串长度,然后将字符串长度和字符串文本写入输出文件.挑战我的步骤是确定具有特殊字符的字符串长度.例如,输入文件看起来像: escitalopram CN(C)CCC[C@@]1(C2=C(CO1)C=C(C=C2)C#N)C3=CC=C(C=C3)F ibuprofen CC(C)CC1=CC=C(C=C1)C(C)C(=O)O keflex CC1=C(N2[C@@H]([C@@H](C2=O)NC(=O)[C@@H](C3=CC=CC=C3)N)SC1)C(=O)O aspirin CC(=O)OC1=CC=CC=C1C(=O)O linoleic_acid CCCCC/C=C\C/C=C\CCCCCCCC(=O)O 我可以使用批处理命令行和参数%1读取文件提取两个令牌.我尝试了在讨论组中发现的一些子例程,但我无法让他们工作. " ="标志,也许其他特殊字符会引起问题.我正在寻找可以产生类似输出文件
20 2024-03-29
编程技术问答社区
使用脚本查找字符串的长度的奇怪结果?
我正在测试由unclemeat提交的代码这个问题 (unclemeat引用 len.bat @echo off setLocal EnableDelayedExpansion set s=%1 set length=0 :count if defined s ( set s=%s:~1% set /A length += 1 goto count ) echo %length% len.bat的测试 C:\Users\Public>len ^ More? More? 0 C:\Users\Public>len ^^ 12 C:\Users\Public>len ^^^ More? More? 12 C:\Users\Public>len ^^^^ 1 C:\Users\Public>len ^^^^^ More? More? 1 C:\Users\Public>len ^^^^^^ 13 C:\Users\Public>len ^
4 2024-03-29
编程技术问答社区
bash中字符串的长度
如何获得存储在变量中的字符串的长度并将其分配给另一个变量? myvar="some string" echo ${#myvar} # 11 如何将另一个变量设置为输出11? 解决方案 UTF-8字符串长度 使用wc 使用wc,您可以(来自man bc): -c, --bytes print the byte counts -m, --chars print the character counts 因此,您可以在 shell : echo -n Généralité | wc -c 13 echo -n Généralité | wc -m 10 echo -n Généralité | wc -cm 10 13 for string in Généralités Language Théorème Février "Left: ←" "Yin
8 2024-03-27
编程技术问答社区
如何用JavaScript估计一个字符串的磁盘大小?
我需要尝试在JavaScript中估算文本字符串的 disk 大小(可以是原始文本或base64编码字符串).我不确定如何估计这一点.我能找到谷歌搜索的唯一一件事是.length,所以我认为可能会在stackoverflow上有人知道... 我需要知道的原因是,我有一个局部存储脚本需要(或希望拥有)何时何时接近他的5MB(或IE中的10MB)配额,并提示他们增加最大尺寸对于域.因此,如果用户击中,请说,使用 提示的4.5mbs数据 您正在接近浏览器5MB数据上限.请通过... 增加最大数据 解决方案 这不是准确的,但是您可以计算字符串中的字节数以获得粗略的估计. function bytes(string) { var escaped_string = encodeURI(string); if (escaped_string.indexOf("%") != -1) { var count = escaped_string.spli
12 2024-03-27
编程技术问答社区
第n个最长的字符串排序
我已经编写了代码,用于确定一系列字符串中最长的字符串.下面我有codewars kata列出的测试用例. 指令:实现功能最长(数组,n),在其中您将获得一系列字符串,然后返回该数组中最长的字符串.例如arr = ['Hello','world','codewars','katas'] n = 3;应该返回"世界",因为" codewars"长度= 8,'hello'长度= 5,所以这是第二个最长的单词,然后是" world'(尽管也是5个单词长度," world"在大批).当单词具有相同的长度时,请按照数组中存在的顺序对待它们.数组永远不会是空的,n> 0总是. Test.assertEquals(longest(['Hello','World','Codewars','Katas'],3),'World'); Test.assertEquals(longest(['Hello','World','Codewars','Katas'],4),'Katas'); Test.as
8 2024-03-06
编程技术问答社区
为什么我分割这个字符串时,我的string.length是0?
这可能是一个非常简单的问题,但我将首先给您代码. import java.util.Scanner; public class help { public static void main(String args[]) { Scanner sc = new Scanner(System.in); System.out.print("Give: "); String s = sc.next(); String[] parts = s.split("."); System.out.println(parts.length); } } 即使我给予192.168.1.1.1.1.1或1.2.3或... parts.length将始终为0,如果我输入1.2 .3.4? 解决方案 您需要s.split("\\."),因为split的参数是正则表达式.正则表达式中的.字符表示"任何字符",您需要用后斜切逃脱它才能使其表示" dot".
8 2024-03-06
编程技术问答社区
当数组的长度不是空时,出现 "panic: runtime error: index out of range"(恐慌:运行时错误:索引超出范围)。
我很难学习如何通过绳子循环去做一些事情(特别是分开的单词,而不是包含元音). 我写了此代码段: >. 这是我运行时遇到的错误: panic: runtime error: index out of range goroutine 1 [running]: panic(0x1045a0, 0x1040a010) /usr/local/go/src/runtime/panic.go:500 +0x720 main.myFunc(0x114130, 0x4, 0x0, 0x0, 0x0, 0x3ba3) /tmp/sandbox960520145/main.go:19 +0x1a0 main.main() /tmp/sandbox960520145/main.go:10 +0x40 我在这个论坛上搜索了,有人说这是由于阵列的长度,但事实并非如此.我不知道如何解决这个问题. 有人可以建议吗? 解决方案 问题是您正在创建一个具有长度0的切片,
8 2024-03-05
编程技术问答社区
PHP最短/最长的字符串在数组中的长度
我有一个 array $data = array( "163", "630", "43", "924", "4", "54" ); 如何根据字符串长度而不是数字值选择最小和最大的值 . (在此示例中为1(最小)和3(最大). 解决方案 似乎您应该使用 array_map( ) // Convert array to an array of string lengths $lengths = array_map('strlen', $data); // Show min and max string length echo "The shortest is " . min($lengths) . ". The longest is " . max($lengths); 请注意,$lengths数组是未分类的,因此您可以轻松地检索每个字符串长度的相应数字. 其他解决方案 这是 brian_
4 2024-03-04
编程技术问答社区
VBScript编码挑战:分割命令后按字符串长度排序数组
我是VBScript编码的C学生,需要一些帮助. 我的代码执行拆分命令如下: outputArray = split(描述,"") 现在,使用数组中的描述中的单个单词,我想根据每个单词的字符串长度对数组进行排序. 因此,例如,如果描述等于"这是描述的示例",那么我的数组值是[这是,,一个,一个,示例,a,describe],对吗? ,但我想求助于数组,以便最长的单词首先,即数组项按字符串长度排序.因此,在我似乎无法弄清楚一些vbScript代码之后,数组看起来像这样:[描述,示例,this,an,as,of,a] 如果有弦长的领带,则次要类型是字母顺序的. 我非常感谢那里的一个学生对此提供一些帮助.谢谢. 解决方案 由于VBScript没有本地形式,因此需要朋友的一点帮助.在您的情况下 - 由于您的更复杂的排序标准,朋友不应是.net的arraylist,jscript的sort或sort.exe(在此处介绍),但是断开连接的ADO Re
2 2024-03-04
编程技术问答社区
在Spark SQL DSL中计算字符串长度
编辑:这是一个有关Spark 1.2 的旧问题 我一直在尝试将schemardd中字符串列的长度用于订购目的.我正在学习Spark SQL,所以我的问题严格是要使用DSL或SQL接口激发SQL暴露或知道其局限性. 我的第一个尝试是使用集成的关系查询,例如 notes.select('note).orderBy(length('note)) 汇编时没有运气: error: not found: value length (这让我想知道在哪里可以找到该DSL实际上可以解决的"表达".例如,它可以解决"+"列的添加.) 然后我尝试了 sql("SELECT note, length(note) as len FROM notes") 这将失败 java.util.NoSuchElementException: key not found: length (然后我重读这个(我正在运行1.2.0) http://spark.apache.or
8 2024-03-01
编程技术问答社区