题解 | #字符串最后一个单词的长度#
字符串最后一个单词的长度
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;
}