现代汉语下黄伯荣pdf:请问,这个C程序错在哪里 如何改

来源:百度文库 编辑:中科新闻网 时间:2024/04/30 03:08:54
4. main()
{ char *p;
scanf(“%s”,p);
printf(“%s\n”,p);
}

p申明成指向一个字符串的指针,没有初始化不安全的,就是可以指向任意的地址(有些编译器会初始化成NULL),如果指向不属于自己的程序空间的话,使用该指针就会引起程序崩溃。
修改方法:
1:预计输入的最大串大小,例子中为100个字符。
#define MAX 100
#include<stdio.h>
main()
{ char p[MAX+1];
scanf("%s,p);
printf("%s\n,p);
}
2:使用动态分配方法,参考malloc和remalloc.

#include<stdio.h>
main()
{ char *p;
scanf("%c",&p);
printf("%c\n",*p);
}
p前的*为运算符,即取值运算

你没有给 p 分配内存空间啊,你只是声明了一个指针而已。

#include<stdio.h>
main()
{ char p;
scanf("%c",&p);
printf("%c\n",p);
}

P是一个字符指针变量,不能对指针变量进行赋值和输出操作。只能对它指向的对象进行赋值和输出操作,或只能将变量分配的地址赋给指针变量。