运行不出来,不知道哪里出错了

题目:以“#”为结尾输入字符串,在字符串中的所有小写字母字符后面添加$字符



```c

#include<stdio.h> 
int main()
{
int i=0,flag=0,k=0;
char a[80],b[80];
while(a[k]=getchar()!='#'){
k++;
}
a[k]='\0';
int j=0;
for(i=0;a[i]!='0';i++){
if(a[i]>='a'&&a[i]<='z'){
flag=1;
b[j]=a[i];
j++;
b[j]='$';
j++;
}
else{
    b[i]=b[j];
    j++;
} 
}
b[j]='\0';
if(flag==0){
printf("NO FOUND");
}
else
for(i=0;b[i]='\0';i++){
printf("%c",b[j]); 
}
 } 

```

大哥,你要注意,字符串终结,这样写代码时要用a[i] !='\0';
除此之外,你的代码有一些不细心的错误(太多),能明显看出你并没有理解逻辑。

你可以去学习回顾一下c语言字符串的表示及初始化,以及对字符串进行打印的方式。
数组存储字符串时,一定要注意终结默认是'\0',并且,遍历的时候,理解逻辑再写代码,多调试和日志分析代码,一定不要越界(就是代码没结果或者看不懂问题的原因)

#include<stdio.h> 
int main()
{
    int i = 0, flag = 0, k = 0;
    char a[80] = { 0 }, b[80] = {0};
    while ((a[k] = getchar()) != '#') {
        k++;
    }
    a[k] = '\0';
    int j = 0;
    for (i = 0; a[i] != '\0'; i++) { //字符串的终结符是 \0
        if (a[i] >= 'a' && a[i] <= 'z') {
            flag = 1;
            b[j] = a[i];
            j++;
            b[j] = '$';
            j++;
        }
        else {
            b[j] = a[i];//有错误 
            j++;
        }
    }
    b[j] = '\0';
    printf("b is [%s] \n", b);
    if (flag == 0) {
        printf("NO FOUND");
    }
    else {
        for (i = 0; b[i] != '\0'; i++) {
            printf(" %c ", b[i]); //有错误
        }
    }

}


 #include<stdio.h> 
int main()
{
int i=0,flag=0,k=0;
char a[80],b[80];
while((a[k]=getchar())!='#'){
    if(a[k]>='a'&&a[k]<='z'){
        flag=1;
        a[++k]='$';
    }
    k++;
    
}
a[k]='\0';//'#'放不放在数组内,如果放在数组内,则改为a[++k]='\0';
if(flag==0){
    printf("NO FOUND");
}
else
for(i=0;i<k;i++){
    printf("%c",a[i]); 
}
return 0;
}

用C++改的,跟c区别不大,基础问题较多,代码里面说了



#include<iostream>
using namespace std;
#include<stdio.h> 
int main()
{
    int i = 0, flag = 0, k = 0;
    char a[80], b[80];
    while (1) {//输入这用getchar有问题,最好这样用
        cin >>a[k];
        k++;
        if (a[k-1] == '#')
            break;
    }
    a[k] = '\0';
    int j = 0;
    for (i = 0; a[i] != '\0'; i++) 
    {
        if (a[i] >= 'a'&&a[i] <= 'z') {
            flag = 1;
            b[j] = a[i];
            j++;
            b[j] = '$';
            j++;
        }
        else {
            b[j] = a[i];//这你原来写的啥忘了,反正这也写错了
            j++;
        }
    }
    b[j] = '\0';
    if (flag == 0) {
        printf("NOT FOUND");//英语问题,not found
        
    }
    else
        for (i = 0; b[i] != '\0'; i++) {
            printf("%c", b[i]);//写成b[j]了
        }
}