Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.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_String_Loops - Fatal编程技术网

C如何在没有数组的情况下将标点符号后的字符大写?

C如何在没有数组的情况下将标点符号后的字符大写?,c,string,loops,C,String,Loops,我对C编程语言非常陌生,我很好奇在程序中如何在不使用数组的情况下将标点符号后面的字母大写。我尝试使用ASCII码值减去32,但在我的代码中似乎不起作用。这是我的代码中输出字母的一部分。我以为word=word-32可以工作,但在运行程序时它什么也没做。我非常感谢你的帮助 while ((word = getchar()) != EOF && word != '\n'){ if (word == ' ' || word == '.' || word == '?' |

我对C编程语言非常陌生,我很好奇在程序中如何在不使用数组的情况下将标点符号后面的字母大写。我尝试使用ASCII码值减去32,但在我的代码中似乎不起作用。这是我的代码中输出字母的一部分。我以为word=word-32可以工作,但在运行程序时它什么也没做。我非常感谢你的帮助

while ((word = getchar()) != EOF && word != '\n'){
        if (word == ' ' || word == '.' || word == '?' || word == '!' || word == '(' || word == ')' || word == '*' || word == '&' || word == ';' || word == ':'){
            printf("\n");
            word = word - 32;
        }

        if ((word >= 'A' && word <= 'z')){
            printf("%c", word);
        }

    }
while((word=getchar())!=EOF&&word!='\n'){
如果(单词=“|单词=”。|单词=”?“|单词=”!”|单词=”(“|单词=”)“|单词=”*“|单词=”&“|单词=”;“|单词=”:”){
printf(“\n”);
word=word-32;
}

如果((word>='A'&&word您可以使用一个标志来检查最后一个条目是否是标点符号,然后根据该标志更改下一个输入并再次重置它

char word;int flag=0;
while ((word = getchar()) != EOF && word != '\n'){
    if(flag==1){
        printf("\n");
        word = word - 32; flag=0;
    }
    if (word == ' ' || word == '.' || word == '?' || word == '!' || word == '(' || word == ')' || word == '*' || word == '&' || word == ';' || word == ':'){
      flag=1;
    }

    if ((word >= 'A' && word <= 'z')){
        printf("%c", word);
    }
}
char字;int标志=0;
而((word=getchar())!=EOF&&word!='\n'){
如果(标志==1){
printf(“\n”);
word=word-32;标志=0;
}
如果(单词=“|单词=”。|单词=”?“|单词=”!”|单词=”(“|单词=”)“|单词=”*“|单词=”&“|单词=”;“|单词=”:”){
flag=1;
}

如果((单词>=‘a’& &字是C还是C?你想在标点符号后面大写字母,但是你的代码是为它本身是标点符号的字母来做的!使用调试器。C中的编程语言不是C++ +约翰逊-C,C++和C是三种不同的语言。欢迎使用堆栈溢出。请阅读该页。对于某些代码Sets,
word-32
实际上会将小写字母转换为相应的大写字母,但没有有意义的标点符号映射。减法对于大小写转换是一个坏主意;您应该使用
中的工具,例如
tolower()
相反。您可能需要记录何时看到标点符号,然后下次看到字母时,将其大小写转换为大写(并将标志设置回“标点符号后不显示”)。有一个
ispunt()
也是。请注意,您通常不应创建以下划线开头的自己的符号。ISO/IEC 9899:2011§7.1.3保留标识符的部分内容是:-所有以下划线和大写字母或其他下划线开头的标识符始终保留供任何使用。-所有以下划线开头的标识符在普通和标记名空间中,e始终保留用作文件范围的标识符。它比“不使用前导下划线”更细微,但不会太多。@JonathanLeffler谢谢你的洞察力,我会处理这个场景。从什么时候开始,人们在
&
符号后大写?@RedX:因为问题让你这么做。你也在空白后大写。事实上,这个问题对标点符号有一个不正确的定义。它会产生很多新行。@Jonatha恩,那好吧。