Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 切换案例意味着资本变小和资本变小_C - Fatal编程技术网

C 切换案例意味着资本变小和资本变小

C 切换案例意味着资本变小和资本变小,c,C,例如,如果文件包含以下文本:计算机。然后在运行代码之后,文件的内容应该是:计算机 但问题是只有一个字符是a。它不会变成首都A #include<stdio.h> #include<conio.h> #include <ctype.h> int main() { char name[100]; int loop; printf("Enter any Sting: "); gets(name); for (loop=0;

例如,如果文件包含以下文本:
计算机
。然后在运行代码之后,文件的内容应该是:
计算机

但问题是只有一个字符是a。它不会变成首都A

#include<stdio.h>
#include<conio.h>
#include <ctype.h>

int main()
{
    char name[100];
    int loop;
    printf("Enter any Sting: ");
    gets(name);

    for (loop=0; name[loop] !=0; loop++)
    {
        if(name[loop]>='A' && name[loop]<='Z')
            name[loop]=name[loop]+32;
        else if(name[loop]>'a' && name[loop]<='z')
            name[loop]=name[loop]-32;
    }
    printf("\nConvert case of character : %s",name);
    return 0;
}
#包括
#包括
#包括
int main()
{
字符名[100];
内环;
printf(“输入任何标记:”);
获取(名称);
for(loop=0;name[loop]!=0;loop++)
{
如果(名称[loop]>='A'&&name[loop]'A'&&name[loop]更改

改变


您的代码存在许多问题:

#include<stdio.h>
main
定义为
intmain(void)
intmain(intargc,char*argv[])

所以这整件事只是一个刺痛?有趣的拉普苏斯

    gets(name);
绝对决不决不使用
gets
!如果用户在提示下键入超过99个字符,
gets
将导致缓冲区溢出,因为它无法确定
名称的大小。此缓冲区溢出极有可能导致程序崩溃,但仔细利用此漏洞可能会导致攻击r控制计算机。这是一个非常好且简单的安全漏洞示例。
scanf
与大多数情况一样,在这种情况下更加复杂、效率低下且难以安全使用。只需使用
fgets
并适当处理尾部的
'\n'

    for (loop=0; name[loop] !=0; loop++)
这个循环的常用习惯用法是使用一个名为
i
的索引变量。将它命名为
loop
会让人感到困惑和冗长。与
0
的比较可以写得更简单,因为
name[loop]
是你的老师允许的,或者
name[loop]='\0'
可以清楚地表明你在比较字符

    {
        if(name[loop]>='A' && name[loop]<='Z')
您使用的是ASCII或类似的编码。这种肮脏的技巧不可移植,容易混淆和出错。只需使用
tolower
函数即可

        else if(name[loop]>'a' && name[loop]<='z')
参见上文。
toupper
就是为此而设计的

    }
    printf("\nConvert case of character : %s",name);
修复损坏的英语。在格式字符串的末尾添加一个
'\n'
。如果不这样做,某些系统甚至不会输出任何内容

    return 0;
}

在线校对作业只有在你从中学到东西的情况下才有用。我希望你做到了!

你的代码有很多问题:

#include<stdio.h>
main
定义为
intmain(void)
intmain(intargc,char*argv[])

所以这整件事只是一个刺痛?有趣的拉普苏斯

    gets(name);
绝对决不决不使用
gets
!如果用户在提示下键入超过99个字符,
gets
将导致缓冲区溢出,因为它无法确定
名称的大小。此缓冲区溢出极有可能导致程序崩溃,但仔细利用此漏洞可能会导致攻击r控制计算机。这是一个非常好且简单的安全漏洞示例。
scanf
与大多数情况一样,在这种情况下更加复杂、效率低下且难以安全使用。只需使用
fgets
并适当处理尾部的
'\n'

    for (loop=0; name[loop] !=0; loop++)
这个循环的常用习惯用法是使用一个名为
i
的索引变量。将它命名为
loop
会让人感到困惑和冗长。与
0
的比较可以写得更简单,因为
name[loop]
是你的老师允许的,或者
name[loop]='\0'
可以清楚地表明你在比较字符

    {
        if(name[loop]>='A' && name[loop]<='Z')
您使用的是ASCII或类似的编码。这种肮脏的技巧不可移植,容易混淆和出错。只需使用
tolower
函数即可

        else if(name[loop]>'a' && name[loop]<='z')
参见上文。
toupper
就是为此而设计的

    }
    printf("\nConvert case of character : %s",name);
修复损坏的英语。在格式字符串的末尾添加一个
'\n'
。如果不这样做,某些系统甚至不会输出任何内容

    return 0;
}

在线校对作业只有在你从中学到东西的情况下才有用。我希望你这样做了!

谢谢我收到了这个。只是一个船长。你能解释一下吗!为什么会有危险。C中的新手。@Probe:因为它不能阻止谢谢,我用scanf修改了它,我认为这对这样的程序来说已经足够了。谢谢我收到了这个。只是一个船长。你能解释一下吗?为什么会有这样的问题是危险的。C中的新手。@Probe:因为它不能阻止,谢谢,我用scanf修改了它,我认为这对于这样的程序来说已经足够了。
            name[loop]=name[loop]-32;
    }
    printf("\nConvert case of character : %s",name);
    return 0;
}