我正在开发一个 C 项目,用户可以直接通过该程序创建博客。我正在设置我的输出 HTML 和 CSS 文件,但似乎无法修复我遇到的这个错误。
需要明确的是,编译器不会发出错误或警告。
错误是这样的:对于我输入的某些(不是全部)博客标题,目录名称变为附加了%8B%FF
,或只是%FF
,或其他一些变体,但始终以%FF
. 此文件夹不包含任何文件,并且在重新启动计算机之前无法删除。当错误未出现时,文件夹中存在文件。
我已经包含了我的大部分代码,因为我真的不明白这个错误。我相信错误出现在我要求创建 HTML 和 CSS 文件的底部。CreateNewBlog()
如果没有这些行,则不会发生错误。
那么,%FF
我的目录末尾的含义是什么,为什么会在那里?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
void CreateNewBlog();
void NewBlogHTML(char path[92], char blog_title[64]);
void NewBlogCSS(char path[92], char blog_title[64]);
int main()
{
CreateNewBlog();
return 0;
}
void CreateNewBlog()
{
char blog_title[64];
char dir_name[64];
char mkdir[70];
char touch[70];
char html_path[92];
char css_path[92];
int i = 0;
printf("Enter blog title: ");
fgets(blog_title, 64, stdin);
blog_title[strlen(blog_title) - 1] = '\0'; // removes trailing '\n' from fgets()
for (i = 0; blog_title[i]; i++) { // convert "Blog Title" to "blog-title"
if (blog_title[i] == ' ') {
dir_name[i] = '-';
} else dir_name[i] = tolower(blog_title[i]);
}
dir_name[strlen(dir_name)] = '\0';
sprintf(mkdir, "mkdir %s", dir_name);
system(mkdir);
sprintf(touch, "touch %s/index.html", dir_name);
system(touch);
sprintf(html_path, "%s/index.html", dir_name);
sprintf(css_path, "%s/style.css", dir_name);
NewBlogHTML(html_path, blog_title); // HERE IS THE PROBLEM (when uncommented)
NewBlogCSS(css_path, blog_title); //
}
void NewBlogHTML(char path[92], char blog_title[64])
{
FILE *index = fopen(path, "w");
// html file text
fclose(index);
}
void NewBlogCSS(char path[92], char blog_title[64])
{
FILE *style = fopen(path, "w");
// css file text
fclose(style);
}