c - 在字符串末尾添加字符

标签 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;       
}     

最佳答案

我猜,问题出在空格上。输入第一个字符串后,输入缓冲区中仍然有换行符 \n。当您用 scanf 读取一个字符时,您得到的是换行符,而不是您输入的字符。

当您在格式字符串前添加空格时,可以跳过空格

scanf(" %c",&a[i]);

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

更新:

来自scanf

The format string consists of a sequence of directives which describe how to process the sequence of input characters.
...
• A sequence of white-space characters (space, tab, newline, etc.; see isspace(3)). This directive matches any amount of white space, including none, in the input.

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

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

关于c - 在字符串末尾添加字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23055531/

相关文章:

java - 如何在不使用 split 和 stringtokenizer 的情况下反转 java 字符串中的单词

java - 如何确定一个字符串部分包含另一个字符串? (最好是Java)

c - 这两个 scanf 语句有什么区别?

c - 在 C 中执行时显示完成百分比

python - 查找字符串中三个 ASCII 系列的重复出现

string - 如何传递修改后的字符串参数?

c - C 中的字符串处理——指针和引用调用问题

c - 字符串不按照分配方式打印

c++ - 如何使负载平衡代理更加完全异步?

c++ - 为什么 a = (a+b) - (b=a) 是交换两个整数的错误选择?