好用的扩展就是 scanf() 的“%ms”占位符。
介于 % 和 s 之间的 m 有 measure(测量)的含义,它可以测量输入字符串的长度,scanf() 根据字符串的长度分配内存,并将字符串拷贝到这段内存,之后将首地址返回给 m。在使用完毕后,需要调用 free() 函数释放这段内存。
程序源代码如下:
#include<stdioh>
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 字节,剩下的字符将留在缓冲区内,等待下一次读取。
"#include
<stdioh>
#include
<ctypeh>
#define
N
50
int
main()
{
int
chr=0,space=0,dig=0,other=0;
char
string[N];
char
s;
printf("Please
input
the
string:
");
gets(string);
s=string;
while(s!='\0')
{
if(isalpha(s))
chr++;
else
if(isspace(s))
space++;
else
if(isdigit(s))
dig++;
else
other++;
s++;
}
printf("Result:\n");
printf("English
chars:
%d\n",chr);
printf("Space:
%d\n",space);
printf("Digit:
%d\n",dig);
printf("Others:
%d\n",other);
return
0;
}
用<ctypeh>会更加容易明了有些,注意要用gets输入字符串才可以包含空格,用scanf则不可以"
比如获取一个int类型数组的长度:
int example[20];int ArrLength;
ArrLength = sizeof(example) / sizeof(int);
这样就行了。
先输入10个字符串,然后依次计算字符串长度,找到最长的一个,并把这个字符串输出即可。
代码如下:
#include <stdioh>#include <stringh>
int main()
{
char s[10][100];
int i;
int max_i, max_len = 0;
for(i = 0; i < 10; i ++)
scanf("%s",a[i]);//输入10个字符串。
for(i = 0; i < 10; i ++)
{
int l = strlen(s[i]);
if(max_len < l) //依次将长度和max_len对比,找到最长一个。
{
max_len = l;
max_i = i;
}
}
printf("%s\n", s[max_i]);//输出最长字符串。
return 0;
}
#include <stdioh>
#include <stringh>
main()
{
int k;
char p="abcdefg";
k=strlen(p);
printf("这个 %s 字符串长度是:%d\n",p,k);
}
以上就是关于C语言中将字符串打印成指定长度的方法全部的内容,包括:C语言中将字符串打印成指定长度的方法、C语言怎么计算字符长度、C语言怎么获取数组长度等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)