Что это такое. при каких условиях эта ошибка всплывает ?
>Что это такое. при каких условиях эта ошибка всплывает ?При неправильном приведении типов.
>>Что это такое. при каких условиях эта ошибка всплывает ?Выписка из man
Signal Value Action Comment
--------------------------------------------------------
...
SIGSEGV 11 C Invalid memory reference
...
>При неправильном приведении типов.А что значит правильное приведение типов?
>>Что это такое. при каких условиях эта ошибка всплывает ?
>
>При неправильном приведении типов.
Тогда как от seg fault избавиться тут ;
int main() {
char *msg;
scanf("%s",msg);
}
>>>Что это такое. при каких условиях эта ошибка всплывает ?
>>
>>При неправильном приведении типов.
>Тогда как от seg fault избавиться тут ;
>
>int main() {
> char *msg;
> scanf("%s",msg);
> }более хитрый случай
char* str="123 456 ...";
char* t=strtok(str," \t");
приводит к аналогичному результату.
>>>>Что это такое. при каких условиях эта ошибка всплывает ?
>>>
>>>При неправильном приведении типов.
>>Тогда как от seg fault избавиться тут ;
>>
>>int main() {
>> char *msg;
>> scanf("%s",msg);
>> }
>
>более хитрый случай
>
> char* str="123 456 ...";No comments...
char* str=strdup("123 456 ...");
> char* t=strtok(str," \t");
>приводит к аналогичному результату.См. выше
>>>Что это такое. при каких условиях эта ошибка всплывает ?
>>
>>При неправильном приведении типов.
>Тогда как от seg fault избавиться тут ;
>
>int main() {
> char *msg;
> scanf("%s",msg);
> }Сделать например
msg=(char *) malloc(20);Тогда для как минимум 19 символов все будет OK
P.S. И когда вы хоть немного доки читать будете, люди... :)
*
strtok: These function cannot be used on constant strings.#include <stdio.h>
#include <string.h>int main () {
char str[] = "123 456 ...";
char *t = strtok (str, "\t");return (0);
}
scanf ?
wher you want store result ?#include <stdio.h>
int main () {
//char *str; str = NULL
char str[100];scanf ("%s", str);
printf ("str = %s\n", str);
return (0);
}
Find Truth and It makes you free.