带你学C中E26“双指针”问题
前面的行和列我已经算出来了。但是把用户输入的字符赋值的时候有问题。字符指针和整数指针好像不太一样,不能直接循环赋值。所以不知道怎么办,求大佬帮助,万分感谢!!!#include <stdio.h>
int main()
{
char str1;
int x=0,y=0,j=0,k=0,m=0,n=0;
printf("请输入要进行分割的字符串(请以空格结尾!!):");
fgets(str1,1024,stdin);
while(str1 != '\n')
{
if((int)str1 == 32)
{
y++;
x++;
continue;
}
x++;
}
// y+=1;
//计算行数(即文字分为几段?
x=0;
m=0;
while(str1 != '\0')
{
if((int)str1 == 32)
{
m=(j>=m?j:m);
j=0;
x++;
k++;
while(k == y)
{
break;
}
continue;
}
j++;
x++;
}
printf("m=%d y=%d",m,y);
//以下代码是疑问出现的地方
n=0;
char *p;
for(x=0;x<y;x++)
{
for(k=0;k<m;k++)
{
*p=str1;
while((int)str1 == 32)
{
break;
}
n++;
}
n++;
}
for(x=0;x<y;x++)
{
for(k=0;k<m;k++)
{
printf("%s",*p);
}
printf("\n");
}
return 0;
}
我来解答
先占个楼(){:10_256:} char *p;
这是个什么?为什么要这么写? #include <stdio.h>
int main()
{
char str1;
int x=0,y=0,i=0,j=0,k=0,m=0,n=0;
printf("请输入要进行分割的字符串(请以空格结尾!!):");
fgets(str1,1024,stdin);
x=0;
while('\n'!=str1)
{
if(32==str1)
{
if(32!=str1)y+=1;
}
x+=1;
}
y+=1;
x-=1;
char* p;
k=y;
p=str1;
while(x>0)
{
if(32==str1)
{
str1='\0';
if(str1)
{
p[--k]=str1+x;
}
}
x-=1;
}
for(int i=0;i<y;i+=1)printf("%s\n",p);
return 0;
}
页:
[1]