5-9行改
for(i=0;i<50&&nm[i-1]!='@';i++)
nm[i]=getchar();
或者
6,7行去掉
8行后面加
if(nm[i]=='@')
break;
因为你有getchar和scanf两个重复输入了,况且第六行那样写,我验证了一下,没赋上值,你也可以验证一下
#include<stdio.h>
int main()
{
char a[10];
int i=0;
for(i=0;i<10&&a[i-1]!='@';i++)
a[i]=getchar();
for(i=0;i<10;i++)
printf("%d:%c\n",i,a[i]);
return 0;
}