readfile — конвертировать в верхний регистр только комментарии из программы на c ++

Я пытаюсь прочитать файл, а затем преобразовать комментарии в верхний регистр внутри файла.

Вот мой код:

char s[100];
void initstring();
void error(char);
void cap(char s[]);
void main(void)
{
initstring();
getchar();
}
void initstring()
{

FILE *fp;
fp = fopen("example.txt","r");
while(fgets(s,100,fp)!=NULL)
{
cap(s);
}

}
void cap(char s[])
{
cout << "its in";
for(int i=0;i<strlen(s);i++)
{
if(s[i]=='/' && s[i+1]=='/')
{       int x=i;
do
{
s[x]=toupper(s[x]);
x++;
}while(s[x]!='\n');
break;
}
else if(s[i]=='/' && s[i+1]=='*')
{
int y=i;
do
{
s[y]=toupper(s[y]);
y++;
}while(s[y]!='/');
break;
}

}
cout << s;
}

Это дает мне предупреждение о том,

warning C4018: '<' : signed/unsigned mismatch

и ошибка на fopen

Error   1   error C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.

На самом деле программа изначально была на c, и сейчас я делаю это на c ++.

Спасибо за любую помощь.

1

Решение

Это просто поведение новых версий MSVC. добавлять #define _CRT_SECURE_NO_WARNINGS в начало вашего файла, чтобы продолжить использовать небезопасные функции.

Что касается предупреждения, то это потому, что strlen возвращает целое число без знака, а не целое число со знаком, так что вы можете просто сделать int i в unsigned int i чтобы избежать предупреждения.

2

Другие решения


По вопросам рекламы [email protected]