[英]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.