我有一个典型的问题,它不是如何使用scanf函数但如何扫描初始空间中的字符串输入如何扫描初始空间用C
这是我做了什么我扫描的空间:
#include <stdio.h>
#include <string.h>
int main()
{
int n;
char a[10];
scanf("%d",&n);
scanf(" %[^\n]",a);
printf("%d",strlen(a));
return 0;
}
,当我用下面的输入运行程序:
aa bb//note there are two spaces before initial a
,输出为6
,但有8个字符,即,2 spaces
其次是2 a
的后跟2 spaces
,然后最后2 b
的
我前夕尝试过的自己的功能..但唉!长度为6
。这里是我的功能:
int len(char a[101])
{
int i;
for(i=0;a[i];i++);
return i;
}
我认为,最初的2位被忽略了......或者我可能是错的。如果有人能解释为什么字符串的长度是6
,我怎么能让它8
或接受我上面提到的所有8
字符,这会很棒。
编辑:这是我的实际代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int i,N,j,k;
char **ans,s[101];
scanf("%d",&N);
ans=(char **)calloc(N,sizeof(char*));
for(j=0,i=0;i<N;i++)
{
scanf(" %[^\n]",s);
printf("%d",strlen(s));
ans[i]=(char*)calloc(strlen(s),sizeof(char));
for(k=0,j=((strlen(s)/2)-1);j>=0;j--,k++)
{
ans[i][k]=s[j];
}
for(j=strlen(s)-1;j>=strlen(s)/2;k++,j--)
{
ans[i][k]=s[j];
}
}
for(i=0;i<N;i++)
{
printf("%s\n",ans[i]);
}
scanf("%d",&i);
return 0;
}
不能使用像表达正则表达式例如'scanf'中的''%[^ \ n]“'' – cwschmidt
@cwschmidt是的。您可以。 –
您的代码应该按预期工作。你确定你可以重现吗?顺便说一句,你的输入包含7个字符,而不是8. –