C++11中使用不了gets而转换为使用fgets
当遇到一道题目:
abc def ghi
需要你分别输出各个单词的时候
你在读取这个字符串的过程中,由于字符串中有空格,所以我一开始想到的是用gets来读取,但是发现编译无法通过,后面通过查阅资料发现c++11中无法使用gets,所以转而使用fgets。
fgets使用方法:
fgets(buf,len,fp)
buf是char数组的名称,len是字符串的最大长度,fp是FILE指针
所以在代码中一般这样使用fgets(a,LEN,stdin);
同时因为该题使用了双指针,所以给出双指针模板:
for(int i=0,j=0;i<n;i++)
{
while(j<i&&check(i,j)) j++;
//每道题目的具体逻辑
}
题目答案如下:
#include<bits/stdc++.h>
#include<iostream>
using namespace std;
int main()
{
char a[100];
fgets(a,100,stdin);
int len=strlen(a);
for(int i=0;i<len;i++)
{
int j=i;
while(j<len&&a[j]!=' ') j++;
for(int k=i;k<j;k++)
cout<<a[k];
cout<<endl;
i=j;
}
return 0;
}
c++中或许使用的是
#include <iostream> char str[256]; cin.getline(str,256);
或者
#include <string> string str; getline(cin,str);
确实,学到了