#include <stdio. h> int len( ) ; int main( ) { int n; printf("请输入一个字符串(以回车键结束输人):"); n=len( ) ; printf("字符串中共有%d个字符\n" ,n); return 0; } int len( ) { char с; int m=0; c=_; while (c! ='\n') { _; c=getchar( );} return (m) ;}改写以上程序,用数组来存放字符串
时间: 2023-12-08 12:06:18 浏览: 65
下面是使用数组来存放字符串的代码:
```
#include <stdio.h>
int len(char str[]) {
int m=0;
while (str[m] != '\0') {
++m;
}
return m;
}
int main() {
char str[100]; // 定义一个数组来存放字符串,长度为100
int n;
printf("请输入一个字符串(以回车键结束输入):");
scanf("%[^\n]", str); // 读取输入字符串,直到遇到换行符为止
n = len(str);
printf("字符串中共有%d个字符\n", n);
return 0;
}
```
使用数组来存放字符串,可以通过下标来访问字符串中的每一个字符,从而计算字符串长度。需要注意的是,在读取输入字符串时,可以使用 scanf() 函数,并使用格式化字符串 "%[^\n]" 来读取输入,这样可以避免输入字符串中包含空格时出错。
相关问题
请使用while函数将fun函数的内容补充完整,编写出一个C语言程序,对字符串,除首、尾字符外,将其字符按ASCII编码数值降序排列的操作:#include<stdio.h> #include<ctype.h> #include<string.h> #include<conio.h> void wwjt(); void fun(char *a,int len) { int i,j; char t; } main(){ char s[100]; int l; printf("输入字符串:"); gets(s); l=strlen(s); fun(s,l); printf("\n%s\n",s); wwjt(); }
#include<stdio.h>
#include<ctype.h>
#include<string.h>
#include<conio.h>
void wwjt();
void fun(char *a, int len) {
int i, j;
char t;
i = 1;
j = len - 2; //除去首尾字符后的最后一个字符的下标
while (i < j) {
while (i < j && a[i] > a[j]) {
t = a[i];
a[i] = a[j];
a[j] = t;
i++;
j--;
}
i++;
j--;
}
}
int main() {
char s[100];
int l;
printf("输入字符串:");
gets(s);
l = strlen(s);
fun(s, l);
printf("\n%s\n", s);
wwjt();
return 0;
}
void wwjt() {
printf("我爱计算机网络课程设计!\n");
}
下方代码的功能是获取输入的字符串的长度,请指出代码哪里存在问题:#include<stdio.h> #include<stdlib.h> #include<string.h> int getLen(char* ss) { int* p = ss; int c = 0; while (*p != '\0') { printf("%c\n",*p); p++; c++; } return c; } int main() { char ss[30] = {0}; gets(ss); int len=getLen(ss); printf("len=%d",len); return 0; }
这段代码中存在以下问题:
1. 在第5行中,将字符指针p直接赋值为字符串指针ss是错误的,因为字符指针和字符串指针是不同的类型。正确的方式是将字符指针p指向字符串指针ss所指向的字符串的第一个字符,即 `int* p = &ss[0];` 或 `char* p = ss;`。
2. 在第12行中,使用了不安全的函数`gets`,该函数会导致缓冲区溢出漏洞,应该使用更安全的函数`fgets`替代。
3. 在第13行中,输出的字符串长度不包括字符串末尾的'\0',因此应该在返回值前减去1。
修改后的代码如下:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int getLen(char* ss) {
char* p = ss;
int c = 0;
while (*p != '\0') {
printf("%c\n", *p);
p++;
c++;
}
return c - 1;
}
int main() {
char ss[30] = {0};
fgets(ss, 30, stdin);
int len = getLen(ss);
printf("len=%d", len);
return 0;
}
```
阅读全文