C语言中将字符串打印成指定长度的方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中将字符串打印成指定长度的方法相关的知识,希望对你有一定的参考价值。

好用的扩展就是 scanf() 的“%ms”占位符。

介于 % 和 s 之间的 m 有 measure(测量)的含义,它可以测量输入字符串的长度,scanf() 根据字符串的长度分配内存,并将字符串拷贝到这段内存,之后将首地址返回给 m。在使用完毕后,需要调用 free() 函数释放这段内存。

程序源代码如下:

#include<stdio.h>

int length(char *p);

void main()

int len;

char *str[20];

printf("please input a string:\\n");

scanf("%s",str);

len=length(str);

printf("the string has %d characters.",len);

int length(char *p)

int n;

n=0;

while(*p!='\\0')

n++;

p++;

return n;

扩展资料

1、在C语言程序开发中需要读取用户输入时,即使不能事先获知输入长度,也是有办法写出高稳定性的程序的。不过在实践中,一般不推荐使用 scanf() 函数处理用户输入,即使我们解决了输入长度的问题。

2、介于 % 和 s 之间的数字应小于 name 的长度,这个数字表示 scanf() 一次最多读取 127 字节的数据放入 name。如果用户输入的字符串超出了 127 字节,剩下的字符将留在缓冲区内,等待下一次读取。

参考技术A

C语言中使用printf函数的输出字符串格式控制,可以很方便的将字符串按设计者要求进行输出。

格式说明:

printf("%[m][.n]s", str ); 

中括号,表示可选项,不是格式内容

m   输出最小宽度,单位字节,若str长度不足m,前补空格

.n   仅输出字符串str的前n位

参考代码:

#include<stdio.h>
int main()

    char s[]="abcdef";
    printf("1234567890\\n");
    printf("%8.0s\\n", s );
    printf("%8.3s\\n", s );
    printf("%8.5s\\n", s );
    printf("%8.9s\\n", s );
    return 0;

运行结果:

1234567890
        
     abc
   abcde
  abcdef

参考技术B 如果要按表格形式打印一组字符串,你就需要将字符串打印成指定长度。利用printf()函数可以很方便地实现这一点,请看下例:
# include <stdio. h>
char * data[25] =
"REGION", "--Q1--", "--Q2--", "--Q3--", "--Q4--",
"North" , "10090. 50" , "12200. 10" , "26653.12" , "62634. 32" ,
"South", "21662.37", "95843.23", "23788.23", "48279.28",
"East", "23889.38", "23789.05", "89432.84", "29874.48",
"West", "85933.82", "74373.23", "78457.23", "28799.84" ;
void main (void) ;
void main (void)

int x;
fox (x = 0, x<25; x+ + )

if ((x % 5) == 0&&(x !=0))
printf("\n");
printf (" %-10. 10s" , data[x]) ;



在上例中,字符串数组char *data[]中包含了某年4个地区的销售数据。显然,你会要求按表格形式打印这些数据,而不是一个挨一个地毫无格式地打印这些数据。因此,上例中用下述语句来打印这些数据:
printf("%-10.10s",data[x]);
参数"%-10.10s"指示printf()函数按10个字符的长度打印一个字符串。在缺省情况下,printf()函数按右对齐格式打印字符串,但是,在第一个10的前面加上减号(-)后,prinft()函数,就会使字符串左对齐。为此,printf()函数会在字符串的尾部加入空格,以使其长度达到10个字符。上例的打印输出非常整洁,类似于一张表格,如下所示:
REGION --Q1-- --Q2-- --Q3-- --Q4--
North 10090.50 12200.10 26653.12 62634.32
SOuth 21662.37 95843.23 23788.23 48279.28
East 23889.38 23789.05 89432.84 29874.48
West 85933.82 74373.23 78457.23 28799.84

Excel中将字符串中从右起第n个指定字符替换的方法

比如你想把www.baidu.com.cn中的倒数第二个”.”替换成@,则可以用:

=SUBSTITUTE(A1,".","@",LEN(A1)-LEN(SUBSTITUTE(A1,".",""))-1)

其中:A1 为字符串所在单元格。


此方法引申自:http://blog.sina.com.cn/s/blog_6f6ecb1f0100pq4i.html

@茵yuan的博客

A1:

123,11,2,34

 

查找右边第一个","所在位置 (右起第3位)

LEN(A1)-FIND("☆",SUBSTITUTE(A1,",","☆",LEN(A1)-LEN(SUBSTITUTE(A1,",",""))),1)+1

 

LEN(A1)-LEN(SUBSTITUTE(A1,",",""): 字符串长度 - 不为","的个数 = 3

SUBSTITUTE(A1,",","☆",LEN(A1)-LEN(SUBSTITUTE(A1,",",""))) 用"☆"替换第3次出现的","

FIND("☆",SUBSTITUTE(A1,",","☆",LEN(A1)-LEN(SUBSTITUTE(A1,",",""))),1) 从第一个字符开始找到"☆"第一次出现的位

 

语法:SUBSTITUTE(text,old_text,new_text,instance_num)。

 

Text是需要替换其中字符的文本,或是含有文本的单元格引用;

Old_text是需要替换的旧文本;

New_text用于替换old_text 的文本;

Instance_num 为一数值,用来指定以new_text 替换第几次出现的old_text;如果指定了instance_num,则只有满足要求的old_text 被替换;否则将用new_text 替换Text 中出现的所有old_text。

 

语法: FIND(find_text,within_text,start_num)

FINDB(find_text,within_text,start_num)

 

Find_text 是要查找的文本。

Within_text 是包含要查找文本的文本。

Start_num 指定开始进行查找的字符。within_text 中的首字符是编号为 1 的字符。如果忽略 start_num,则假设其为 1。

 

如何在excel规定的字符串中插入某个字符

如A列的数据需要转换,在B2或其它格输入下式后向下拉放复制即可:
=MID(A1,1,2)&"A"&MID(A1,3,10)

以上是关于C语言中将字符串打印成指定长度的方法的主要内容,如果未能解决你的问题,请参考以下文章

请问:C语言中要产生指定长度的空格字符串是用啥函数?

生成仅包含指定字符的指定长度的随机字符串(在 Java 中)

python中生成一个指定长度的随机字符串实现示例

C语言fgets()函数(以指定长度读取文件中的字符,并存入字符数组变量中)

c语言求字符串长度

易语言问题 错误(36): 找不到指定的对象成员命令名称“取文本长度”。