我想在C中创建一个程序,将小写字母改为大写,反之亦然,包括符号等。要么 -。当我给它一个没有符号的输入它完美地工作,但当我插入符号时,程序打印随机字符。我对此感到困惑,我不知道为什么会这样。
我已经看过两篇有类似问题的帖子,但仍然没有弄清楚我的问题,这两个帖子是:
输入示例1:
asd.DSA
输出示例1:
ASD.dsa
1-\y�
输入示例2:
asdDSA
输出示例2:
ASDdsa
代码:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <string.h>
int main(void) {
pid_t readWrite;
pid_t changeString;
readWrite = fork();
if(readWrite == 0) {
char str[49];
while(fgets(str, 50, stdin) != NULL) {
printf("%s", str);
changeString = fork();
if(changeString == 0) {
int result = 0;
char newstr[49];
for(int i = 0; i < strlen(str); i++) {
if(str[i] >= 'A' && str[i] <= 'Z') {
newstr[result++] = str[i] + 32;
} else if (str[i] >= 'a' && str[i] <= 'z') {
newstr[result++] = str[i] - 32;
} else {
newstr[result++] = str[i];
}
}
printf("%s", newstr);
break;
}
}
}
while(wait(NULL)>0);
return 0;
}
答案 0 :(得分:2)
exports.test = functions.https.onRequest((req, res) => {
cors(req, res, () => {});
const idToken = req.query.idToken;
admin.auth().verifyIdToken(idToken)
.then((decoded) => {
var uid = decoded.uid;
return res.status(200).send(uid);
})
.catch((err) => res.status(403).send(err));
});
应为空终止(或使用newstr
打印)printf("%.*s", result, newstr)
可能会使fgets
溢出一个字节