我有代码问题。我想从txt文件的每一行中取出第一个和最后一个单词。我现在写了这段代码:
void StartEnd(char * word)
{
FILE* fp;
fp = fopen("linie.txt", "r");
if (fp == NULL) {
printf("! ");
return;
}
char store[MAX_LINE];
while (fgets(store, MAX_LINE - 1, fp)){
char * FirstWord = strtok(store," ");
char * LastWord;
char * token = strtok (store," ");
while (token != NULL){
LastWord = token;
token = strtok (NULL," ");
}
printf("%s\n",LastWord);
}
fclose(fp);
}
它适用于最后一句话,但前提是我不将 FirstWord 与 strtok 一起使用并且我不知道为什么:(。我将不胜感激。谢谢!
在第一次调用时,该函数需要一个 C 字符串作为 str 的参数,其第一个字符用作扫描标记的起始位置。在随后的调用中,该函数需要一个空指针,并使用最后一个标记结束后的位置作为新的扫描起始位置。
在对 的后续调用中strtok
,您应该传递一个NULL
指针。这样做可以使函数正常工作:
void StartEnd(char * word)
{
FILE* fp;
fp = fopen("linie.txt", "r");
if (fp == NULL) {
printf("! ");
return;
}
char store[MAX_LINE];
while (fgets(store, MAX_LINE - 1, fp)){
char * FirstWord = strtok(store," ");
char * LastWord;
char * token = strtok (NULL, " ");
while (token != NULL){
LastWord = token;
token = strtok (NULL," ");
}
printf("%s\n",LastWord);
printf("%s\n",FirstWord);
}
fclose(fp);
}
请记住,fgets
读取n-1
字符或直到遇到一个newline
或EOF
字符。然而,换行符也被视为有效字符并存储在字符串中。这意味着LastWord
可能以newline
字符结尾。要解决这个问题,请传递" \n"
而不是" "
strtok。然后换行符和空格都被视为分隔符。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句