【发布时间】:2018-06-11 14:57:57
【问题描述】:
不工作的代码。在用户初始化变量后的函数main 中,它转到if 部分,然后发生崩溃。该程序的目标是影响字符串中的重复字符。所以我决定在函数f1中有一个指针,指针应该指向数组0th的字符kar[]
然后将0th char 与1st char 进行比较,但程序恰好在最后一个scanf("%s",kar[1000]). 之后崩溃
问题出在哪里?
#include <stdio.h>
char f1(char* p)
{
int i=0,c=1;
while(*(p+i))
{
if(*p==*(++p))
{
c+=1;
p++;
i++;
continue;
}
else
{
if(c>1)
{
printf("%c%d",*p,c);
}
else
{
printf("%c",*p);
}
}
i++;
}
}
int main()
{
int n,i,m;
char kar[1000];
scanf("%d",&n);
for(i=1;i<=(2*n);++i)
{
scanf("%d",&m);
scanf("%s",kar[1000]);
if(m==1)
{
f1(kar);
}
}
}
【问题讨论】:
-
现在是learn how to debug your programs的最佳时机。
-
虽然有一些提示:
scanf函数期望什么样的参数?如何访问数组中的单个元素?未初始化的局部变量,包括像kar这样的数组是未初始化的,具有indeterminate(并且看似随机)的值。听听你的编译器,它应该为那个程序对你大喊大叫。 -
@Someprogrammerdude 这仅适用于合理的编译器,不一定适用于所有可能的编译器。 : ]