【发布时间】:2023-03-28 12:00:01
【问题描述】:
我的任务是编写一个带有指针的小程序,我遇到了const char*s 的问题。该程序旨在计算子字符串出现在主字符串中的次数。此外,子字符串开始的不同位置应保存在 char** ptr 中。这是我的小测试代码:
#include <stdio.h>
#include <string.h>
main()
{
int i=-1;
int k=0;
char** ptr;
char* str="cucumber";
char* substr="cu";
while(strstr(str, substr)!=NULL)
{
i++;
ptr[i]=strstr(str, substr);
str = strpbrk(str, substr)+1;
k++;
}
printf("%i",k);
}
它应该打印 2,因为子字符串 'cu' 在 'cucumber' 中出现了 2 次 - 然而,我的编译器告诉我我正在使用字符,而我应该使用常量字符。除了,我不知道该怎么做。
strstr() 函数需要它们。我应该改变什么?
【问题讨论】:
-
执行这个程序(如果它可以编译)将导致未定义的行为,因为设置 ptr[x] 将尝试写入 ptr 数组,但是,ptr 被声明为单个指针,而不是数组。
-
老兄,您正在写入未分配的内存。您还没有为 char** ptr 分配内存;
-
作业又出问题了!!
-
@siu 还有?提出问题的上下文与 Stack Overflow 无关。我们只关心问题的格式和清晰程度。在这种情况下,很清楚任务是什么,问题是什么,并且发布了迄今为止的工作。所以这是一个相当不错的问题。它只是需要更少的表情符号。