也是开始正式学习C语言,对于C语言也是期待已久。
第一节课只讲了输出问题,与格式问题。
取 借PTA里的一道题(我们第一次作业)来作为正文。
7-7 宇宙无敌大招呼 (5 分)
据说所有程序员学习的第一个程序都是在屏幕上输出一句“Hello World”,跟这个世界打个招呼。作为天梯赛中的程序员,你写的程序得高级一点,要能跟任意指定的星球打招呼。
输入格式:
输入在第一行给出一个星球的名字S
,是一个由不超过7个英文字母组成的单词,以回车结束。
输出格式:
在一行中输出Hello S
,跟输入的S
星球打个招呼。
输入样例:
Mars
输出样例:
Hello Mars
代码如下:
#include <stdio.h>
int main()
{
char S[8]; /*创造一个8个字符的字符串*/
fgets(S,8,stdin);
/*网上了解到的一个fgets函数用法char *fgets(“容器的地址”, “容器的大小”, “从哪里读取”)*/
fgets()
函数的作用就是用来读取一行数据的。但要详细且专业的说的话,fgets()
函数的作用可以这么解释:从第三个参数指定的流中读取最多第二个参数大小的字符到第一个参数指定的容器地址中。在这个过程中,在还没读取够第二个参数指定大小的字符前,读取到换行符'\n'
或者需要读取的流中已经没有数据了。则提前结束,并把已经读取到的字符存储进第一个参数指定的容器地址中。
在正常情况下fgets()
函数的返回值和它第一个参数相同。即读取到数据后存储的容器地址。但是如果读取出错或读取文件时文件为空,则返回一个空指针。
printf("Hello %s",S);
return 0;
}
我一开始使用的代码并不是这个,用的思路是利用if循环语句,而上面的fgets刚好就是这个的整合,简化版。如下:
#include <stdio.h>
int main()
{
char S[7];
int i;
printf("Hello ");
for(i=0;i<=7;i++) { scanf("%c",&S[i]);
if(S[i]=='\0') { break; }
else { printf("%c",S[i]); }
}
return 0;
}
但是这个代码在pta里面报错了,叫运行时错误
搞了好久,也没发现哪里错了,大佬们可以指正一下。