提示:文章
文章目录
前言
前期疑问:
本文目标:
一、背景
二、
2.1 fgets
2024年3月26日19:31:46
今天写了个牛客的题目,坐标移动
坐标移动代码链接
里面我用gets,但是提示warning
您提交的代码无法完成编译
main.c:73:11: warning: ‘gets’ is deprecated [-Wdeprecated-declarations]
while(gets(str) != NULL)
然后我使用了scanf,但是scanf遇到空格就结束获取字符串了。感觉还是不保险。我想到了fgets,但是在坐标移动代码中,使用fgets会出现段错误。在本地调试代码的时候,发现fgets会读取’\n’。
int main()
{
char str[100];
int count = 0;
while(fgets(str, 100, stdin) != NULL)
{
count++;
printf("%s\n", str);
printf("end2\n");
}
printf("count:%d\n",count);
printf("end\n");
}
//hello world
//hello world
//
//end2
然后百度发现fgets会读’\n’是真实存在的问题,那么一般是怎么处理的呢?
(c语言)fgest()键盘获取后解决换行符’\n’的问题
这篇文章中用的是str_tok函数,我在坐标移动的代码中使用str_tok确实实现了效果。后面可以多次运用。
使用strtok输出效果
#include "string.h"
int main()
{
char str[100];
int count = 0;
while(fgets(str, 100, stdin) != NULL)
{
strtok(str, "\n");
count++;
printf("%s\n", str);
printf("end2\n");
}
printf("count:%d\n",count);
printf("end\n");
}
//hello world
//hello world
//end2
2.2
三、
3.1
总结
未完待续