我正在尝试使用以下代码在字符串末尾添加一些字符。我没有得到所需的输出。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
int l,i;
char a[30];
printf("Enter \n");
scanf("%s",a);
l=strlen(a);
for(i=l;i<(29-l);i++)
{
scanf("%c",&a[i]);
a[i+1]='\0';
printf("\n%s",a);
}
return 0;
}
答案 0 :(得分:1)
我猜,问题在于空白。输入第一个字符串后,输入缓冲区中仍有换行符\n
。当您使用scanf
读取一个字符时,您将获得换行符而不是您输入的字符。
当您使用空格
为格式字符串添加前缀时,可以跳过空格scanf(" %c",&a[i]);
现在它将追加在字符串末尾输入的字符。
更新
来自scanf
格式字符串由一系列指令组成,这些指令描述了如何处理输入字符序列 ...
•一系列空格字符(空格,制表符,换行符等;请参阅isspace(3))。该指令在输入中匹配任意数量的空白,包括无空格。
这意味着,当您在格式字符串中插入空格时,它将跳过输入中的所有空格。
这将自动与其他输入指令一起发生,例如%s
或%d
。但是%c
接受下一个字符,即使它是一个空白字符。因此,如果您想在这种情况下跳过空格,则必须通过在格式字符串中插入空格来告诉scanf
。