【发布时间】:2013-08-25 11:31:06
【问题描述】:
C 编程:
我正在尝试获取字符串中每个单词的长度,但是无论我使用什么方法都会遇到大量麻烦并出现分段错误。
我最初试图只使用“strlen(pstr)”,但这导致了分段错误。
这是我的最新尝试,但仍然会导致分段错误:
void format_text(char* text)
{
char* pstr;
char copied[1000];
int loop;
int strCnt = 0;
int temp;
int strSize[100];
int strNo[100];
pstr = strtok(text, " ");
while (pstr != NULL)
{
pstr = strtok(NULL, " ");
strcpy(copied, pstr);
strSize[strCnt] = strlen(copied);
strCnt++;
}
printf("the number of strings is: %d\n", strCnt);
for (loop = 0; loop < strCnt; loop++)
{
printf("The length of string %d is %d\n", loop + 1, strSize[loop]);
}
}
如何获取并打印每个单词(token)的长度?
【问题讨论】:
-
您不会碰巧在只读字符串文字上调用
format_text,对吗? -
我不是 100% 的字符串文字,因为我只是 C 语言的初学者,但我认为不是。它只是使用 fgets 的普通字符串的用户输入。我能够打印出指针(pstr),但无法在其上使用 strlen。 strlen 应该在指针上正常工作,但在这种情况下我得到了分段错误。不知道为什么。我假设将 pstr 复制到一个字符串和 strlen 中,但我也因此得到了分段错误。
-
例如
"this is a string literal"。所以只是""之间的一些硬编码文本。