OpenJudge-16:最长单词2

#本人大一软件工程在读,妥妥的小菜鸟一枚,以下仅是我自己的学习心得,用来整理笔记用的,要是有什么错误,跪请各位大佬指正!!!🙏🙏🙏#

描述

一个以'.'结尾的简单英文句子,单词之间用空格分隔,没有缩写形式和其它特殊形式,求句子中的最长单词。

输入

一个以'.'结尾的简单英文句子(长度不超过500),单词之间用空格分隔,没有缩写形式和其它特殊形式。

输出

该句子中最长的单词。如果多于一个,则输出第一个

解答:这题容易忘记的一个点是:这个句子是以“.”结尾的,因此要先将末尾的句号去掉,再将句子切割标号,各部分比较长短。

代码:

#include <stdio.h>
#include <string.h>
int main(){
	char sen[500],sen0[500];
	char* senPtr;
	char word[50][50];
	int len,len0,num=0;
	int i,j,n=0;
	senPtr=sen;
	gets(sen0);
	len0=strlen(sen0);
	strncpy(sen,sen0,len0-1);
	senPtr=strtok(sen," ");
	for(i=0;senPtr!=NULL;i++){
		strcpy(word[i],senPtr);
		senPtr=strtok(NULL, " ");
	}
	len=strlen(word[0]);
	for(j=1,n=0;j<i;j++){
		if(len<strlen(word[j])){
		num=j;
		len=strlen(word[j]);
		}
		else continue;
	}
	printf("%s\n",word[num]);
	return 0;
}

我最后总结几个我自己在这段代码中的遗忘点和易错点:

1.strtok函数的运用规范和格式:

当用它分割一个句子时,基本格式:

#include <stdio.h>
#include <string.h>
int main(){
    char string[] = "This is a sentence with 7 tokens";
    char *tokenPtr = stroke(string, " ");
    while(tokenPtr != NULL){
        printf("%s\n", tokenPtr);
        tokenPtr = strtok(NULL, " ");  //这个NULL表示这次strtok函数调用将从上一次strtok函数调用保存的位置开始,继续对string标号化,如果调用不再能得到新的标号,则函数strtok返回NULL。
    }
}

值得注意的是:每一次重新调用strtok函数,都会改变包含分隔符的字符串。因此,如果在调用函数strtok之后,程序还要使用这个字符串,则需要事先备份这个字符串的副本(用strcpy)

2.字符串指针的运用

3.二维字符串数组

4.细节决定成败!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值