c - 将字符数组的指针发送到C中的函数

标签 c arrays string pointers character

好吧,长话短说,我遇到了一些麻烦: 我正在尝试将字符数组(字符串)的起始地址发送给函数。一旦函数获得指针,我希望函数一个一个地解析字符(以便修改某些字符)。截至目前,我只是将其设置为打印每个字符,但我仍然非常失败。

这是我的:

#include "system.h"
#include <stdio.h>

typedef unsigned int uint32;
typedef unsigned short uint16;
typedef unsigned char uint8;

void EXCLAIM(char *msg){
    char the_char = 0;
    the_char = msg;
    while (the_char != 0)
    {
        printf(the_char);
        *msg = *(msg++);
        the_char = *msg;
    }
}

int main(void) {
    char *first_str = "This is a test. Will this work. I. am. Not. Sure...";
    while (1) {
        EXCLAIM(first_str);
    }
}

编辑:

这是我尝试做的更新后的代码;发送指针并遍历每个字符,用感叹号替换所有句点。

#include "system.h"
#include <stdio.h>

typedef unsigned int uint32;
typedef unsigned short uint16;
typedef unsigned char uint8;

void exclaim(char *msg){
    int i;
    for( i=0; msg[i]; i++ )
    {
        if (msg[i] == '.') {
            msg[i] = '!';
        }
    }
printf(msg);
}

int main(void) {
    char *the_sentences = "This is a test. Will this work. I. am. Not. Sure...";
    while (1) {
        exclaim(the_sentences);
    }
}

谢谢大家的帮助!

最佳答案

你的 main() 没问题。

问题在于 EXCLAIM 中的指针算法。

我可以看到两个有用的不同版本:

使用指针运算

while (*msg)
{
    printf("%c", *msg);
    msg++
}

使用索引

int i;
char the_char;
for( i=0; msg[i]; i++ )
{
    printf( "%c", msg[i] );
}

关于c - 将字符数组的指针发送到C中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12888579/

相关文章:

python - 使用 `numpy.digitize` 分割 NumPy 数组后如何计算每个 bin 的平均值?

c# - 将大型阵列传输到客户端

c++ - 删除字符串数组中的所有连续重复项

c++ - C++中干净高效的字符串连接

c - 使用某些开关时出现 gcc 编译器错误

检查一个字符串在 C 中是否只有空白字符

java - 如何使用 Lambda 将字符串数组转换为整数数组?

android - 编写 .json 文件并在 Android 中读取该文件

c - 使用pthread_exit终止并返回的线程终止-奇怪的示例

从指针强制转换为不同大小的整数,并且赋值使指针中的整数无需强制转换