C 如何将数组中的数字更改为符号

C 如何将数组中的数字更改为符号,c,arrays,function,logical-operators,C,Arrays,Function,Logical Operators,我试图找到一种将数组中字符串的数字转换为#符号的好方法 我想说清楚,这是家庭作业。我请求帮助是因为我不仅遇到了我想要克服的障碍;但我也想了解数组和函数之间的关系 我已经编写了一些代码,如下所示,但我觉得自己对数组中调用之间的关系感到困惑,因为它们在函数中 以下是我所做的: void coverNumbers(char s[]) { char num; if (s[num] >= '0' || s[num] <= '9') num = '#'; }

我试图找到一种将数组中字符串的数字转换为#符号的好方法

我想说清楚,这是家庭作业。我请求帮助是因为我不仅遇到了我想要克服的障碍;但我也想了解数组和函数之间的关系

我已经编写了一些代码,如下所示,但我觉得自己对数组中调用之间的关系感到困惑,因为它们在函数中

以下是我所做的:

void coverNumbers(char s[]) {
    char num;

    if (s[num] >= '0' || s[num] <= '9')
        num = '#';
}
void covernumber(字符s[]{
字符数;

如果(s[num]>='0'| | s[num]您的操作方式是错误的。您需要在字符串上循环以分别检查和替换每个字符

试试这个

void coverNumbers(char s[]) {
    for (int i = 0; s[i]; i++)
        if (s[i] >= '0' && s[i] <= '9')
            s[i] = '#';
}
void covernumber(字符s[]{
for(int i=0;s[i];i++)

如果(s[i]>=“0”和&s[i]欢迎使用堆栈溢出

您不应该使用堆栈溢出来解决此类问题。但是,如果其他人还没有提出类似的问题,您可以随时就您面临的问题提问

解决方案:

void coverNumbers(char s[]) {
    int len = strlen(s);
    for (int i = 0; i < len; i++) 
        if (s[i] >= '0' && s[i] <= '9') 
            s[i] = '#';
    printf("%s", s);
}
算法:

void coverNumbers(char s[]) {
    int len = strlen(s);
    for (int i = 0; i < len; i++) 
        if (s[i] >= '0' && s[i] <= '9') 
            s[i] = '#';
    printf("%s", s);
}
  • 获取字符串的长度
  • 迭代字符串中的每个字符
  • 根据字符串当前位置(索引)中的值,如果是数字,则替换为“#”
  • 打印输出
代码:

void coverNumbers(char s[]) {
    int len = strlen(s);
    for (int i = 0; i < len; i++) 
        if (s[i] >= '0' && s[i] <= '9') 
            s[i] = '#';
    printf("%s", s);
}
void covernumber(字符s[]{
int len=strlen(s);
对于(int i=0;i如果(s[i]>='0'&&s[i]假设CoverNumber接收到一个C字符串,即指向一个以空字节
'\0'
终止的
char数组的指针,您应该迭代所有字符并执行修改。但是请注意,您使用
|
而不是
&
来测试数字。
s[num]
是一个数字,如果它是
='0'
='0'和&s[i]='0'&&s,谢谢你,这解决了我的问题!但据我的理解,for循环是如何工作的。你是在循环数组本身吗?字符数组是字符串。而C中的字符串以空字符(\0)结尾。因此,for循环一直持续到s[i]为null,这与写入s[i]!='\0'相同注意:您需要在文件中添加“#include”才能使用此选项code@IssamRafihi谢谢。但是这个在线gdb编译器没有要求我添加它。
char-num;
-然后使用
num
-
num
没有被赋予值