我想知道在下面的迭代中是否可以安全地找到数组中第一次出现的str,或者是否有更好的方法.谢谢
#include <stdio.h>
#include <string.h>
const char * list[] = {"One","Two","Three","Four","Five"};
char *c(char * str) {
int i;
for (i = 0; i < 5; i++) {
if (strstr(str, list[i]) != NULL) return list[i];
}
return "Not Found";
}
int main() {
char str[] = "This is a simple string of hshhs wo a char";
printf("%s", c(str));
return 0;
}
Run Code Online (Sandbox Code Playgroud) 大家好日子.我正在使用zend + smarty,但我不认为该框架与该问题有任何关系.我有以下场景:
A script that gets a string from a specified site using an api. The string is retrieved corectly so I'll just assign a string to a variable:
$string = 'String retrieved from api.';
$string = strstr($string, "<?xml", false);
libxml_use_internal_errors(true);
$xml = simplexml_load_string($body);
Run Code Online (Sandbox Code Playgroud)
听起来不错,看起来不错.现在问题.
当我在我们的本地测试机器上使用它时,它就像一个梦想.没问题.另一方面,在生产机器上我得到了这个:
警告:第720行/home/prj/include/DatabaseObject/Ctrl.php中的strstr()参数计数错误(这是strstr行).
我在两台机器上的strstr之前检查了字符串,它们是相同的.同样在strstr行之后的第二个服务器上,字符串变为空(在另一个服务器上,它被正确转换).
我真的不明白......代码是一样的.字符串是相同的.对我来说有点奇怪.
我必须在一个更大的字符串中计算特定C字符串的外观.我正在使用strstr()函数来计算并使用char指针前进通过大C字符串.问题在于它似乎数量太少,比如文本的减少增加到快速,跳过大块的字符.我使用一个类型为int的变量,称为'x',从左到右'减少'文本,但我不知道分配新值的问题是什么.
int x=0;
while((p=strstr(text+x,triG))!=NULL)
{
v[i]++;
x+=x+3+(p-(text+x));
}
Run Code Online (Sandbox Code Playgroud)
text是char*类型,动态地分配.triG的类型为char [4],p的类型为char*.
我想清理url地址,但首先我要检查字符串中是否应该替换.我想使用strpos,因为它更快,但它无法检测到字符串.
$txt = 'http://www.youtube.com/watch?v=aWFmXFFjJfw';
if(strpos($txt, 'http://www.')){
echo 'true strpos'; // not shows
}
if(strstr($txt, 'http://www.')){
echo 'true strstr'; // show
}
Run Code Online (Sandbox Code Playgroud)
也
$match = strpos($txt, 'http://www.');
var_dump($match); // int(0);
Run Code Online (Sandbox Code Playgroud) 我需要提取c中2个字符串模式之间的文本。
例:
aaaaaa<BBBB>TEXT TO EXTRACT</BBBB>aaaaaaaaa
PATTERN1=<BBBB>
PATTERN2=</BBBB>
Run Code Online (Sandbox Code Playgroud)
谢谢。
目前,strstr函数返回找到的字符串的起始位置; 但我想搜索多个字符串,它应该返回找到的字符串的位置,否则返回NULL.任何人都可以帮助我如何做到这一点?
我刚开始使用PHP,希望有人可以帮助我.
我试图myRegion从另一个字符串(" mainString")中提取一个字符串(" "),其中我的字符串始终以" myCountry:" 开头,;如果主字符串在myCountry之后包含更多国家,则以分号()结尾,如果主字符串不包含任何内容之后不再包含更多国家/地区.
显示主字符串的不同选项的示例:
我想要提取的内容始终是粗体部分.
我在考虑类似下面的内容,但这看起来还不对:
$myRegions = strstr($mainString, $myCountry);
$myRegions = str_replace($myCountry . ": ", "", $myRegions);
$myRegions = substr($myRegions, 0, strpos($myRegions, ";"));
Run Code Online (Sandbox Code Playgroud)
迈克,非常感谢您提供任何帮助.
我有一个问题,警告c4133,它说问题是从char*到int*的无法使用的类型,我尝试施放指针((char*)x)但没有运气,也许有人知道什么是问题/
这是我的程序,功能中的问题.
void replaceSubstring(char *str, char *substr)//function that gets string and substring and make the substring in string big letters
{
int i;
int *x;
x = (strstr(str, substr));//The problem line
while (strstr(str,substr) != NULL)
{
for (i=0;i<strlen(substr);i++)
{
*x = *x - 32;
x++;//move to the next char
}
x = (strstr(str, substr)); //first apear of substr int str
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试在字符串中搜索字符以找到它在字符串中的位置,但是,该字符可以是三个中的一个.
我试图达到相当于这个:
char *foo = strstr(string, x);
Run Code Online (Sandbox Code Playgroud)
其中x可以是"i","j"或"k".
最好的解决方法是什么?
这段代码似乎对我不起作用.它输出的数字17显然是错误的.如果遇到5,15,25,50等数字,计数器应该会上升.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main(void) {
int i;
int counter;
char num[4322];
for (i = 1; i < sizeof(num); i++){
num[i] = i;
if ( strstr(&num[i], "5")){
counter = counter + 1;
}
}
printf("%d", counter);
return 0;
}
Run Code Online (Sandbox Code Playgroud)