【问题标题】:Convert to upper case only comments from a c++ program将来自 C++ 程序的注释仅转换为大写
【发布时间】:2014-11-17 07:08:20
【问题描述】:

我正在尝试读取文件,然后将文件中的 cmets 转换为大写。

这是我的代码:

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;
}

它给了我关于 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++ 编写的。

感谢您的帮助。

【问题讨论】:

  • 这只是新版本 MSVC 的行为。将#define _CRT_SECURE_NO_WARNINGS 添加到文件的开头以继续使用不安全的功能。关于警告,那是因为strlen 返回一个无符号整数,而不是一个有符号整数,所以你可以将int i 变成unsigned int i 以避免警告。
  • 如果要切换到C++,请先编写C++程序。例如,使用 std::ifstream 代替 fopen。
  • 谢谢@Govind 让我试试
  • 谢谢@govindParmar 完成了。

标签: c++ readfile toupper


【解决方案1】:

这只是新版本 MSVC 的行为。将#define _CRT_SECURE_NO_WARNINGS 添加到文件的开头以继续使用不安全的功能。

关于警告,这是因为 strlen 返回的是无符号整数,而不是有符号整数,因此您可以将 int i 设置为 unsigned int i 以避免警告。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-02
    • 2010-12-03
    • 2015-01-25
    • 2018-06-16
    • 1970-01-01
    • 2013-01-09
    • 2011-10-27
    • 1970-01-01
    相关资源
    最近更新 更多