求输入字符串的长度。
#include <stdio.h>
int main(void){
char str[255],*p;
printf("请输入一个字符串:");
scanf("%s",str);
p=str;
while(*p!='\0')p++;
printf("字符串长为:%ld",p-str);
}
chatgpt改进版:
1.使用了 fgets
函数来接收用户输入的字符串,并限制了输入的最大长度为 MAX_LENGTH - 1
,以避免缓冲区溢出。
2.计算字符串长度的表达式 p - str
返回的是一个指针的差值,它的类型是 ptrdiff_t。
因此,应该使用 %td
作为格式说明符。
3.在计算字符串长度时,应该排除字符串结尾的换行符 \n
,因为 fgets
函数会将换行符读入字符串中。使用了 strcspn
函数来找到字符串中第一个换行符的位置,并将其替换为字符串结束符 \0
,从而去除了换行符。
#include <stdio.h>
#include <string.h>
#define MAX_LENGTH 255
int main(void) {
char str[MAX_LENGTH];
char *p;
printf("请输入一个字符串:");
fgets(str, sizeof(str), stdin);
str[strcspn(str, "\n")] = '\0'; // 去除字符串末尾的换行符
p = str;
while (*p != '\0')
p++;
printf("字符串长度为:%td", p - str);
return 0;
}