gpt4 book ai didi

c++ - 输入C风格字符串并获取长度

转载 作者:行者123 更新时间:2023-11-28 00:45:17 24 4
gpt4 key购买 nike

字符串输入格式是这样的

str1 str2

我不知道没有。预先输入的字符数,因此需要存储 2 个字符串并获取它们的长度。使用 C 风格的字符串,尝试使用 scanf 库函数,但实际上没有成功获取长度。这就是我所拥有的:

// M W are arrays of char with size 25000
while (T--)
{
memset(M,'0',25000);memset(W,'0',25000);
scanf("%s",M);
scanf("%s",W);
i = 0;m = 0;w = 0;
while (M[i] != '0')
{
++m; ++i; // incrementing till array reaches '0'
}
i = 0;
while (W[i] != '0')
{
++w; ++i;
}
cout << m << w;


}

效率不高主要是因为 memset 调用。

注意:我最好不要使用 std::string 但由于 25000 长度输入和 cin 的内存限制,我切换到这个。如果有一种获取字符串的有效方法,那么它将是好

最佳答案

除了已经给出的答案,我认为你的代码有点错误:

   memset(M,'0',25000);memset(W,'0',25000);

你真的是想用字符零(值 48 或 0x30 [假设 ASCII 在一些学究否决我的答案并指出还有其他编码])或 NUL(值零的字符)填充字符串).后者是0 , 不是 '0'

   scanf("%s",M);
scanf("%s",W);
i = 0;m = 0;w = 0;
while (M[i] != '0')
{
++m; ++i; // incrementing till array reaches '0'
}

如果你正在寻找字符串的结尾,你应该使用 0 , 不是 '0' (如上所述)。

当然,scanf将放一个 0 a 字符串的末尾,因此无需用 0 填充整个字符串[或'0' ].

strlen是一个现有的函数,它将给出 C 风格字符串的长度,并且很可能有一个比仅检查每个字符并递增两个变量更聪明的算法,使其更快 [至少对于长字符串]。

关于c++ - 输入C风格字符串并获取长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16505417/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com