Итак, я пытаюсь написать функцию, которая принимает строку и изменяет все строчные значения на прописные. Вот код:
void lowerToUpper(char *s)
{
char *p;
for (p = s; *p; p++)
{
if (islower(*p))
*p = toupper(*p);
}
}
int main (int argc, char * argv[])
{
char *pa;
pa = "This is a test.";
printf("The following string will be edited:\n");
printf("%s\n%s\n%s\n", pa);
lowerToUpper(pa);
printf("The string has been edited, and is now as follows:\n");
printf("%s\n%s\n%s", pa);
return EXIT_SUCCESS;
}
Проблема возникает из-за строки «*p = toupper(*p);», где я получаю ошибку сегментации. Я предполагаю, что проблема возникает из-за попытки присвоить значение, которое toupper(*p) возвращает *p. После некоторых тестов кажется, что toupper(*p) работает, но как только я пытаюсь присвоить значение *p, я seg fault? Любые идеи относительно того, почему это произойдет?
const char* pa = "This is a test.";
- person Hans Passant   schedule 15.05.2014printf("%s\n%s\n%s\n", pa)
содержит больше заполнителей, чем аргументов. - person slezica   schedule 16.05.2014