在字符串末尾添加字符

时间:2014-04-14 08:36:08

标签: c string

我正在尝试使用以下代码在字符串末尾添加一些字符。我没有得到所需的输出。

#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;       
}     

1 个答案:

答案 0 :(得分:1)

我猜,问题在于空白。输入第一个字符串后,输入缓冲区中仍有换行符\n。当您使用scanf读取一个字符时,您将获得换行符而不是您输入的字符。

当您使用空格

为格式字符串添加前缀时,可以跳过空格
scanf(" %c",&a[i]);

现在它将追加在字符串末尾输入的字符。

更新

来自scanf

  

格式字符串由一系列指令组成,这些指令描述了如何处理输入字符序列   ...
  •一系列空格字符(空格,制表符,换行符等;请参阅isspace(3))。该指令在输入中匹配任意数量的空白,包括无空格。

这意味着,当您在格式字符串中插入空格时,它将跳过输入中的所有空格。

这将自动与其他输入指令一起发生,例如%s%d。但是%c接受下一个字符,即使它是一个空白字符。因此,如果您想在这种情况下跳过空格,则必须通过在格式字符串中插入空格来告诉scanf