若干长度不等的字符串文件的输入输出问题

//从键盘输入若干行字符(每行长度不相等),输入后把它们存储到一磁盘文件中。再从该文件中读入这些数据,将其中小写字母转换成大写字母后在显示屏上输出。


#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
    FILE* fp;
    errno_t err;
    char str[80], ch;
    int i, find = 1;
    if (err = fopen_s(&fp, "text.txt", "w"))
    {
        printf("can not open!\n");
        exit(0);
    }
    while (find)
    {
        printf("input string:\n");
        gets_s(str);
        fputs(str, fp);
        printf("continue?");
        ch = getchar();
        if ((ch == 'N') || (ch == 'n'))
            find = 0;
        getchar();
    }
    fclose(fp);
    while (fgets(str, strlen(str)+1,fp)!=NULL)
    {
        for (i = 0; str[i] != '\0'; i++)
            if (str[i] >= 'a' && str[i] <= 'z')
                str[i] -= 32;
        printf("%s\n", str);
    }
    fclose(fp);
    return 0;
}

哪里不对?

img

27行下面加入fopen_s(&fp, "text.txt", "r")。