PTA平台gcc编译环境下c语言程序问题

PTA平台上的题目,用的是gcc编译的c语言程序,能帮我看看这是有什么问题吗?
题目:

题目要求:
本题目要求从键盘输入一个字符串s1,使用fputc函数按照一行方式存放到本地文件"1.txt"中。然后使用fgetc读取文件"1.txt"内容,保存到另一个数组s2中,再通过puts输出s2.

输入格式:
请在这里写输入格式。例如:输入在一行中给出一个长度不超过100的字符串。

输出格式:
请在这里描述输出格式。例如:对每一组输入,在一行中输出一个字符。

输入样例:
在这里给出一组输入。例如:

hello!
输出样例:
在这里给出相应的输出。例如:

hello!

我的代码:

#define _CRT_SECURE_NO_WARNINGS
#include
int main() {
    FILE *p,*q;
    char s1[100];
    char s2[100];
    scanf("%s",s1);
    p = fopen("1.txt", "w");
    for (int i = 0; s1[i] != '\0'; i++) {
        fputc(s1[i], p);
    }
    fclose(p);
    q = fopen("1.txt", "r");
    int i = 0;
    do {
        s2[i++] = fgetc(q);
        if (feof(q)) {
            break;
        }
    } while (1);
    s2[--i] = '\0';
    fclose(q);
    puts(s2);
    return 0;
}

报错提示:

a.c: In function ‘main’:
a.c:7:5: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%s",s1);
^~~~~~~~~~~~~~

警告信息,提示scanf()函数的返回值没有处理,修改如下,供参考:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
int main() {
    FILE* p;
    char s1[100] = { '\0' };
    char s2[100] = { '\0' };
    int  ret;
    ret = scanf("%s", s1);
    if (ret == 1) {
        p = fopen("1.txt", "w");
        for (int i = 0; s1[i] != '\0'; i++) {
            fputc(s1[i], p);
        }
        fclose(p);
        p = fopen("1.txt", "r");
        int i = 0;
        while ((s2[i] = fgetc(p)) != EOF) i++;
        s2[i] = '\0';
        fclose(p);
        puts(s2);
    }
    return 0;
}

scanf返回正确输入的个数,提示返回值没有使用。这个警告可以忽略。
要取消他可以用
int t=scanf()

if(scanf() ){}