提问人:PapaPumpkin 提问时间:11/13/2023 最后编辑:PapaPumpkin 更新时间:11/13/2023 访问量:42
在字符串中查找最后一个单词的长度时出现段错误
Seg Fault When Finding Length Of Last Word In A String
问:
尝试运行此代码时,我不断遇到 seg 错误,其目的是查找字符串中最后一个单词的长度。知道可以改进的地方吗? scanf 输入只是一个末尾带有标点符号的句子。
#include<stdio.h>
#include<string.h>
void clearBuffer();
void chomp(char word[]);
int lastWordLength(char word[]);
int main(){
int x;
char firstSen[500];
printf("Enter a sentence: ");
fgets(firstSen, sizeof(firstSen), stdin);
clearBuffer();
x = lastWordLength(firstSen);
printf("Length of last word in \"%s\" is %d.",firstSen,x);
return 0;
}
void clearBuffer()
{
while(getchar() != '\n');
}
void chomp(char word[])
{
if(word[strlen(word)-1] == '\n')
{
word[strlen(word)-1] = '\0';
}
}
int lastWordLength(char word[])
{
int i;
int x;
while(word[strlen(word)-i] != ' ')
{
x += 1;
i += 1;
}
return x;
}
答:
评论
scanf("%s", firstSen);
while(word[strlen(word)-i] != ' ')
fgets()
%499[^\n]
%s
strtok()
x
并且未初始化 - 可能还存在其他问题。i
lastWordLength