Я прочитал стандарт, но все еще не уверен:
#include <stdio.h>
#include <string.h>
void repl(char *restrict ap){
char *cp=strchr(ap,(int)'m');
*cp='M';
}
int main(){
char arr[] = "example";
repl(arr);
puts(arr);
return 0;
}
В функции repl
я использовал strchr
, чтобы получить еще один указатель для изменения объекта. Я ожидаю, что результатом будет строка, в которой первый m
заменен на M
.
Но может ли это быть неопределенным поведением?
Если да, то как насчет использования ap[cp-ap]='M';
вместо *cp='M';
?
'm'
, уже имеют типint
. Так что не нужно их приводить, и в любом случае, даже если бы типы были разными, приведение в любом случае не очень хорошая идея. - person Jens Gustedt   schedule 27.12.2014