C语眼,指针字符哪里错了?

来源:百度知道 编辑:UC知道 时间:2024/05/14 03:34:20
#include<stdio.h>
#include<string.h>
void main()
{
char *string[5];
char *newString;
int i;
for(i = 0; i < 5; i++)
{
printf("请输入第%d个字符串",i+1);
scanf("%s",&string[i]);
}
newString = string[0];
for(i = 1; i < 5; i++)
{
if(strlen(string[i]) > strlen(newString))
{
newString = string[i];
}
}
printf("最长的字符串是:%s\n",newString);
}

你虽然定义了一个字符指针的数组,但是这些字符指针并没有指向某个内存区域,所以这时候他们是不能使用的。还有就是scanf("%s",&string[i]);
中string[i]已经是字符指针了,所以前面不能加&。
你需要对这些字符指针做初始化才能在scanf中使用。就是让它指向某块内存。
可以这样:
printf("请输入第%d个字符串",i+1);
string[i]=new char[100];
scanf("%s",&string[i]);

scanf语句的后面不能够用“&”,因为它是一个指针类型的