题解 | #字符串最后一个单词的长度#

字符串最后一个单词的长度

http://www.nowcoder.com/practice/8c949ea5f36f422594b306a2300315da

key to exercises

question 1: fgets

  • 函数原型
    char *fgets(char *str, int n, FILE *stream);
  • 参数
    str-- 这是指向一个字符数组的指针,该数组存储了要读取的字符串。
    n-- 这是要读取的最大字符数(包括最后的空字符)。通常是使用以 str 传递的数组长度。
    stream-- 这是指向 FILE 对象的指针,该 FILE 对象标识了要从中读取字符的流。
#include<string.h>
#include<stdio.h>
 
int main ( void )
{
    FILE*stream;
    char string[]="Thisisatest";
    char msg[20];
/*open a file for update*/
    stream=fopen("DUMMY.FIL","w+");
/*write a string into the file*/
    fwrite(string,strlen(string),1,stream);
/*seek to the start of the file*/
    fseek(stream,0,SEEK_SET);
/*read a string from the file*/
    fgets(msg,strlen(string)+1,stream);
/*display the string*/
    printf("%s",msg);
    fclose(stream);
    return 0;
}

Question2: stdin

C语言中stdin流的用法:
stdin是C语言中标准输入流,一般用于获取键盘输入到缓冲区里的东西。

Remeber key1: Clean code

#include<bits/stdc++.h>
 
using namespace std;
 
int main() {
    string s;
    while(cin >> s);
    cout << s.size();
    return 0;
}

Remeber key2: Basic code

#include<bits/stdc++.h>

using namespace std;

int main()
{
    char str[5000] = {0};
    char *str_p = str;
    int count = 0;
    fgets(str, sizeof(str),stdin);//Enter a string of less than 5000 characters
    
    int str_len = strlen(str) - 1;//Count string total characters count
    if (str_len <= 0)
    {
        printf("0\n");
        return 0;
    }
    
    str_p = str_p + str_len -1;//Transfer to the last charcter
    
    for(int i = 0; i < str_len; i++)//Count forward one by one until hit a space
    {
        if (*str_p != ' ')
            count++;
        else
            break;
        str_p--;
    }
    
    printf("%d\n",count);
    return 0;
}
全部评论

相关推荐

有趣的牛油果开挂了:最近这个阶段收到些杂七杂八的短信是真的烦
点赞 评论 收藏
分享
耀孝女:就是你排序挂了
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务