我最近开始学C,偶然发现了这个练习。我在找那些开头和结尾都是同一个字母的词。听起来很简单,但是我不知道如何让我的程序对数组中的每个单词重复这个操作。
浏览完网页后,我决定使用strtok
,将数组分成几个单词,然后检查每个单词的开头和结尾是否都是同一个字母。我最终得到了这段代码,但它不起作用,但编译器也没有显示出任何问题。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
main(){
int i;
int found = 0;
char arr[1000];
char *token;
const char s[2] = " ";
printf("Write your line:\n");
scanf("%s", arr);
token = strtok(arr, s);
while(token!=NULL){
if(token[0] == (strlen(token)-1)){
found++;
}
token = strtok(NULL, s);
}
if(found > 0){
printf("Found %d words that start and end with the same letter.\n", found);
}
return 0;
}
有人能告诉我我做错了什么吗?我已经看了好几个小时了,不知道出了什么问题。
最佳答案
将scanf改为get和
f(token[0] == token[strlen(token)-1]
scanf将空格视为所提供输入的结尾。您也可以在scanf下使用说明符%[^\n],它基本上告诉scanf扫描输入,直到出现“\n”。
%[^\n]的缺点是,如果您尝试多次运行程序,它将无法工作,因为scanf从stdin获取其输入。由于stdin中的最后一个字符将是您提供的最后一个“\n”或输入,它基本上会继续跳过下一个输入,使get()成为更好的选项。
关于c - C-以相同字母开头和结尾的单词,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40846341/