#include<stdio.h>
int main()
{
char *str1;
scanf("%s",str1);
printf("%s",str1);
return 0;
}
入:i am
出:(null)
这段代码存在潜在的问题,因为指针变量str1
没有被初始化,所以它指向的地址是不确定的,可能会导致程序崩溃或输出错误的结果。正确的做法是先为指针变量分配内存空间,例如使用malloc
函数动态分配内存空间,或者定义一个字符数组作为缓冲区来存储输入的字符串。
以下是两种修改后的代码示例:
1.使用malloc
函数动态分配内存空间:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *str1 = (char*)malloc(sizeof(char) * 100);
// 分配100个字节的内存空间
scanf("%s", str1);
printf("%s", str1);
free(str1); // 释放内存空间
return 0;
}
2.定义一个字符数组作为缓冲区(用字符数组就不用分配内存了):
#include <stdio.h>
int main()
{
char str1[100]; // 定义一个100个字节的字符数组
scanf("%s", str1);
printf("%s", str1);
return 0;
}