标签: strstr

strstr() 在 gcc 和 VS 中的实现是否具有线性复杂度?

我知道有一些快速的字符串搜索算法,比如Boyer–MooreKnuth–Morris–Pratt,它们的复杂度为 O(n+m),而简单的解决方案是 O(n*m)。

那么,最流行的工具链(gcc 和 Visual Studio)的 strstr() 实现是使用这些快速 O(n) 算法,还是使用简单的解决方案?

c gcc strstr visual-studio

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

将C(\ 0已终止)字符串转换为PHP字符串

PHP是我定期使用的那种语言之一,但是当我再次开始使用它时,通常不得不关闭蜘蛛网.本周同样适用于我将一些C代码移植到PHP.这使用了大量的AES加密和SHA256散列 - 到目前为止一切正常.但是,解密的字符串以"C"形式出现 - 即以零字节后跟"垃圾"填充字节终止.

我目前使用以下内容将这些C风格的字符串"修剪"为PHP表单:

$iv = strpos( $hashsalt8, "\0");
if ($iv)
   $hashsalt8 = substr( $hashsalt8, 0, $iv );
Run Code Online (Sandbox Code Playgroud)

似乎啰嗦而且应该有一个单行函数调用,但我找不到它?

注意:虽然在这种情况下"哈希盐"名称意味着我可能知道原始字符串的长度,但在一般情况下这是未知的.显然,substr()当先验已知长度时,可以使用单线解决方案.

php c string substr strstr

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

如何找到几个字符之一的第一个出现(除了使用正则表达式)

通过一堆线程去后,我知道我需要使用regex.h使用在C&C++的正则表达式.

但我想知道,是否有更简单的方法来搜索字符串中"/"或"\"的出现.

// I have a strstr statement like this -
str = strstr(s, "/");
Run Code Online (Sandbox Code Playgroud)

我想知道是否可以更改它,以便我可以搜索第一次出现 / \在一次调用strstr.

c regex strstr

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

在C中使用strstr

该程序没有给出任何输出......如果输入匹配的字符串,函数find_track应返回该轨道.

#include<stdio.h>
#include<string.h>

char tracks[][80] = {
    "I left my heart in Harward Med School",
    "Newark, Newark - a wonderful town",
    "Dancing with a Dork",
    "From here to maternity",
    "The girl from Iwo Jima",
};

void find_track(char search_for[])
{
    int i;
    for(i = 0; i< 5 ; i++)
    {
        if(strstr(tracks[i],search_for))
        {
            printf("Track %i: '%s'\n",i,tracks[i]);
        }
    }
}

int main()
{
    char search_for[80];
    printf("Search for : ");
    fgets(search_for,80,stdin);
    find_track(search_for);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c strstr

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

如何检查'.'[dot]是否存在于字符串中?strstr无法在php中运行

我想看看是否.[dot]是否存在于字符串中.

我试过strstr但它返回false.

这是我的代码: -

<?php
$str = strpos("true.story.bro", '.');
if($str === true)
{
        echo "OK";
} else {
        echo "No";
}
?>
Run Code Online (Sandbox Code Playgroud)

我想看看'.' 是否存在字符串,我可以做爆炸,但我想做一行,我怎么能这样做?

谢谢

php strstr

4
推荐指数
1
解决办法
2万
查看次数

奇怪的strstr行为

我正在尝试在字符串中找到子字符串的位置.

#include <string.h>
#include <stdio.h>

void find_str(char const* str, char const* substr) 
{
    char* pos = strstr(str, substr);
    if(pos) {
        printf("found the string '%s' in '%s' at position: %d\n", substr, str, pos - str);
    } else {
        printf("the string '%s' was not found in '%s'\n", substr, str);
    }
}

int main(int argc, char* argv[]) 
{
    char* str = "gdeasegrfdtyguh?johh?hugfydsasdrfgthyjkjhghh";
    find_str(str, "hh");
    find_str("dhenhheme    kekekeke hhtttttttttttttttttttttttttttttttttttttttthhtttttttttttt", "hh");

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

在'gdeasegrfdtyguhıjohhıhugfydsasdrfgthyjkjhghh'中找到了字符串'hh',位置:19

在'dhenhheme kekekeke hhttttttttttttttttttttttttttttttttttttttttttttttttthtttttttttttttt'中找到字符串'hh',位置:4

在第一个例子中,它表示它处于第19位.但是它不应该说是18吗?因为在第二个例子中它表示4.它从子串的开头开始.

我糊涂了.

c strstr

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

PHP strstr - 反向方法

我希望获得与 php strstr 命令相同的确切结果(当它设置为 true 时),但顺序相反。

我知道我可以简单地反转字符串并使用 strstr 然后再次反转它

但我想知道该任务是否有任何内部 php 命令。

<?php

$myString = 'We don\'t need no education';

echo strstr($myString, ' ', true);

/*
 * output :
 * We
 *
 * I'm expecting to get :
 * education
 *
 */

exit;

?>
Run Code Online (Sandbox Code Playgroud)

很简单 !

php string trim echo strstr

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

strstr在出现之前显示字符串

我希望在针发生之后得到字符串的第一位...

$user = strstr('someemail@yahoo.com', '@', true); 
Run Code Online (Sandbox Code Playgroud)

但这只适用于PHP版本5.3.0,我有5.2.9有没有办法可以获得相同的结果?

php strstr

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

strstr()的参数计数错误

我在wordpres中使用帖子GUID构建了一个导航菜单,并且发布标题,我只占用了标题的一部分并且这样做我正在执行以下操作,

$casestudylist .= "<li class='subnav'><a href=".$v->guid.">". strstr($v->post_title, ":", true)."</a></li>";
Run Code Online (Sandbox Code Playgroud)

但是我收到以下警告并且无法解决原因:

wrong parameter count for strstr()
Run Code Online (Sandbox Code Playgroud)

基本上我试图从字符串中拉出所有字符,如果它们在a之前:.

php regex string string-matching strstr

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

strstr:使用不同版本的gcc进行不同的行为

我正在将一个与Ubuntu 8.04(gcc版本4.2.4)配合使用的程序移植到10.04(gcc版本4.4.3).我有以下代码:

#include <stdio.h>
#include <string.h>

int main(void) {
  char p[100] = "////abcd";
  char *t;

  /* Remove duplicate slashes, saving only one of them */
  while (t = strstr(p, "//"))
    strcpy(t, t + 1);

  printf("%s\n", p);

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

结果应该/abcd是gcc 4.2.4.使用4.4.3,输出为/accd.

你能否建议我使用两种版本的gcc来提供正确的输出代码,并且最好解释一下这里发生了什么.

提前致谢!

c gcc strstr

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

标签 统计

strstr ×10

c ×6

php ×5

string ×3

gcc ×2

regex ×2

echo ×1

string-matching ×1

substr ×1

trim ×1

visual-studio ×1