簡體   English   中英

在C中的char數組中修改和替換值

[英]modify and replace value in char array in C

如程序所示,我不知道輸出新結果有什么問題。 例如,當我用position = 0,value = v完成對Modify_str()函數的調用時,結果不會出現“ vello”,但會出現一些亂碼。 任何人都可以識別錯誤! 謝謝:)

#include<stdio.h>
void print_(char *abc);
void modify_str(char *a);

void main(){
    char c[20]="Hello";
    print_(c);

    modify_str(c);

}


void print_(char *str){
    int i=0;
    while(*(str+i) != '\0'){
        printf("%c", str[i]);
        i++;
    }
    printf("\n");
}

void modify_str(char *c){
    char q[]="Position of char to modify (0-n): ";
    print_(q);
    int pos;
    scanf("%d", &pos);

    printf("value to replace: ");
    char w;
    scanf("%s", &w);

    int index=0;
    while(*(c+index) !='\0'){
        if(index==pos){
            c[index]=w;
            printf("New Result: %c\n", c);
        }
        index++;
    }
}

而不是使用不正確的格式說明符進行此調用

scanf("%s", &w);

采用

scanf(" %c", &w);
       ^^^

while循環應該看起來像

while( *(c+index) !='\0' && index != pos ) ++index;

if ( index == pos && *( c + index ) != '\0' )
{
        c[index]=w;
        printf("New Result: %s\n", c);
                            ^^  
}

用標識符c命名字符串通常也是一個不好的主意,該標識符通常用於命名char類型的對象。 最好使用標識符s

考慮到根據C標准,沒有參數的函數main應該聲明為

int main( void )

順便說一下,函數print_可以像

void print_( const char *str )
{
    puts( str );
}

並且不要在標識符中使用結尾的下划線。 這只是一種不良的編程風格。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM