C程序在正确输出后打印随机符号

时间:2018-04-11 23:17:14

标签: c string printf uppercase lowercase

我想在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;
}

1 个答案:

答案 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溢出一个字节