我的任務是寫一個字符串,然後寫該字符串,需要與另外一個字符串替換的一部分。我設法讓它工作,但如果被替換的字符串是需要替換的字符串的一部分,它只是「吃」一些字母。我可以得到這個任務的一點幫助嗎?的工作代碼 示例:在一個又一個的中間添加新的字符串 - ç
輸入:
This is a beautiful day.
END
輸入2:
a be
輸入3:
not a bee
預期輸出:
This is not a beeautiful day.
我的輸出:
This is not a beeful day.
代碼:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define MAX 1000
main(){
char unos[MAX+1];
int i = 0;
char c;
printf("Enter text. For end type END\n");
while (1){
scanf("%[^\n]%*c", unos, &c);
i = strstr(unos, "END") - unos;
if (i >= 0){
unos[i] = '\0';
break;
}
}
char trazena_zamjena[MAX + 1] = "\0";
char zamjena[MAX + 1];
printf("Enter part that needs to be replaced : ");
i = 0;
do{
scanf("%c", &trazena_zamjena[i]);
if (trazena_zamjena[i] == '\n') {
trazena_zamjena[i] = '\0';
break;
}
i++;
} while (trazena_zamjena[i] != '\n');
printf("Enter replacing text : ");
i = 0;
do{
scanf("%c", &zamjena[i]);
if (zamjena[i] == '\n') {
zamjena[i] = '\0';
break;
}
i++;
} while (zamjena[i] != '\n');
int l = i;
char *ptr;
ptr = strstr(unos, trazena_zamjena);
printf("pointer : %d %p", ptr, ptr);
strncpy(ptr, zamjena, l);
printf("%s\n", unos);
}
如果你想讀一整行,不要使用'使用令人費解的格式字符串scanf',使用['fgets'(http://en.cppreference.com/w/c/io/fgets)代替。 –
'的scanf(「%[^ \ n]的%* C」,UNOS,&c);'看來我錯了 – LPs
的代碼@Joachim Pileborg輸入工作正常,一個與做出改變工作不正常。我們沒有獲得在課堂上與fgets呢,所以我們不能使用它。 –