小编Rob*_*b U的帖子

如果我将字符串作为变量传递,为什么我的将字母转换为大写的函数不起作用?

我用 C 写了一个函数,用指针将所有小写字母转换成大写字母。它看起来像下面这样:

char    *ft_strupcase(char *str)
{
    char    *str_begin;

    str_begin = str;
    while (*str != '\0')
    {
        if (*str >= 'a' && *str <= 'z')
        {
            *str = *str - 32;
        }
        str++;
    }
    return (str_begin);
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用以下主要功能进行测试,则会出现总线错误:

#include "ft_strupcase.c"

int main(void)
{
    printf("The string \"I am your father\" is now %s\n", ft_strupcase("I am your father"));
    return (0);
}
Run Code Online (Sandbox Code Playgroud)

错误消息如下所示:

/bin/sh: line 1: 79346 Bus error: 10
Run Code Online (Sandbox Code Playgroud)

但是如果我创建一个字符串变量来存储字符串,则没有总线错误。例如,如果我使用以下主要功能对其进行测试:

#include "ft_strupcase.c"

int main(void)
{
    char test_string[50] = "I am your father"; …
Run Code Online (Sandbox Code Playgroud)

c string ram pointers toupper

3
推荐指数
1
解决办法
51
查看次数

标签 统计

c ×1

pointers ×1

ram ×1

string ×1

toupper ×1