首页 文章

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

提问于
浏览
2

我想在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 回答

  • 2
    • newstr 应该以空终止(或使用 printf("%.*s", result, newstr) 打印)

    • fgets 可能会溢出 str 一个字节

相关问题