【发布时间】:2015-09-16 05:46:16
【问题描述】:
我是 C 编程语言的新手,我很好奇如何在不使用数组的情况下在标点符号后的程序中大写字母。我尝试通过减去 32 来使用 ASCII 代码值,但它似乎在我的代码中不起作用。这是我输出字母的代码的一部分。我认为 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);
}
}
【问题讨论】:
-
是 C 还是 C# ?此外,您希望将标点符号 之后的字母大写,但您的代码会尝试对本身就是标点符号的字母进行大写!使用调试器。
-
用 C 而非 C++ 编写程序
-
@Johnson - C、C++ 和 C# 是三种不同的语言。
-
欢迎来到 Stack Overflow。请尽快阅读About 页面。对于某些代码集,
word - 32实际上会将小写字母转换为相应的大写字母,但没有有意义的标点符号映射。减法对于大小写转换是个坏主意;您应该改用<ctype.h>的设施,例如tolower()。您可能需要记录何时看到标点符号,然后当您下次看到字母时,将其大小写转换为大写(并将标志设置回“不在标点符号之后”)。还有一个ispunct()。