strlen相关内容
我是C的新手,我有一个小问题。我需要编写一个程序,用户在其中输入文本,程序会显示文本的长度。 我尝试了strlen(),但这不是我想要的。 char a[20]; scanf("%s",a) 如果我键入";Hello world";,结果是5,但我需要11。 我需要使用scanf,但可能无法使用它... 推荐答案 此调用 scanf("%s"
..
为什么 strlen() 不检查 NULL? 如果我这样做 strlen(NULL),程序分段错误. 试图理解其背后的基本原理(如果有的话). 解决方案 背后的道理很简单——不存在的东西怎么检查长度? 此外,与“托管语言"不同,运行时系统不会正确处理无效数据或数据结构.(这类问题正是为什么更“现代"的语言在非计算或性能要求较低的应用程序中更受欢迎的原因). c 中的
..
假设 UTF-8 编码,PHP 中的 strlen(),有没有可能这个字符串的长度是 4? 我只对 strlen() 感兴趣,而不是其他函数 这是字符串: $1�2 我在自己的电脑上测试过,验证过UTF-8编码,得到的答案是6. 我在 strlen 的手册中或我在 UTF-8 上阅读的任何内容都没有看到任何内容可以解释为什么上述某些字符的计数小于 1. PS
..
我正在查看 strlen 代码 这里 我想知道代码中使用的优化是否真的需要?例如,为什么像下面这样的东西不能同样好或更好? unsigned long strlen(char s[]) {无符号长我;for (i = 0; s[i] != '\0'; i++)继续;返回我;} 更简单的代码不是更好和/或更容易让编译器优化吗? 链接后面页面的strlen代码如下: /* 版权所有 (C)
..
在 C 中有什么方法可以让人们找到字符数组的长度? 我很乐意接受伪代码,但我并不反对有人愿意写出来:) 解决方案 前提是char数组以null终止, char chararray[10] = { 0 };size_t len = strlen(chararray);
..
#include #include #include int main(int argc, char *argv[]){国际冷杉;//错误命名的循环变量char *input[] = calloc(strlen(argv), sizeof(char));//初始化一个数组for( fir = 1; fir
..
我刚刚完成了我的刽子手游戏,作为最后一步,我正在进行一些代码清理和优化,但我似乎无法理解为什么我会收到以下两个警告: 警告:内置函数 'strlen' 的隐式声明不兼容 警告:内置函数'strcpy'的隐式声明不兼容 使用它们的代码在这里: for(i = 1; i 我所做的是使用 fgets 从文件中读取一个随机单词.在此之后,我删除了 fgets 自动放置的 '\n'.
..
让我们考虑这个简单的测试程序: #include #include int main(int argc, char *argv[]){字符缓冲区[256];国际我;strcpy(buf,"Hello world!");我 = strlen(buf);printf("字符串长度为 %d.\n",i);返回0;} 在使用 Intel C++ 编译器并打开优化 (O3) 对其进行编译时,我从 val
..
我正在尝试创建自己的 strlen 和 substr 函数,但有 1 个问题. 例如,假设我有字符串 ABC,我的 strlen 将返回 3,假设我想将此字符串从 0 剪切为 1,它应该返回给我 A,但是如果我将 substr 插入到 a,我会得到一些垃圾值新字符并检查我将收到的长度 14. 这是我的代码: int len(char *w){整数计数=0;int i=0;而 (w[i]!
..
--截图开始--字符名称[15];...printf("请输入员工姓名\n");scanf("%s",name);printf("strlen %d \n", strlen(name));——剪辑结束——输出:输入员工姓名维罗妮卡8 为什么不在末尾添加空字符!?我错过了什么吗? 请人解释一下. 已编辑: 正在使用 fgets 从打开的文件中读取行并使用 strtok(line,
..
strlen 返回终止空字符之前的字符数.strlen 的实现可能如下所示: size_t strlen(const char * str){const char *s;for (s = str; *s; ++s) {}返回(s - str);} 此特定实现取消引用 s,其中 s 可能包含不确定的值.相当于: int a;int* p = &a;*p; 例如,如果有人要这样做(这会导致 s
..
我已经阅读并想知道sqlite的源代码 static int strlen30(const char *z){const char *z2 = z;while( *z2 ){ z2++;}返回 0x3fffffff &(int)(z2 - z);} 为什么使用 strlen30() 而不是 strlen()(在 string.h 中)?? 解决方案 提交消息 包含此更改状态: [
..
我正在尝试计算一些“连胜",特别是连续获胜和失败的最高次数,以及大多数没有获胜的比赛,没有失败的比赛. 我有一个看起来像这样的字符串;'WWWDDWWWLLWLLLL' 为此,我需要能够返回: 最长连续运行 W 字符(然后我将复制 L) 最长连续运行没有 W 字符(然后我将复制 L) 我已经找到并修改了以下内容,这些内容将遍历我的数组并告诉我最长的序列,但我似乎无法对其进
..
我是递归主题的新手,我一直在尝试使用递归编写“strlen"函数,这就是我尝试过的: int strlen ( char str[], int i){if ( str[i] == 0) 返回 i+1;返回 strlen(str,i++);} 我尝试了一些非常相似的东西 int strlen( char str[], int i){if ( str[i] == 0) 返回 1;返回 strle
..
这是一个多用途问题: 这与 glibc strlen 实现相比如何?立>有没有更好的方法来解决这个问题,也可以用于自动向量化. #include #include #include #include #include #include /* 待办事项:文件 */#define WORD_ONES_LOW ((size_t)-1/UCHAR_MAX)#define WORD_ONES_H
..
我知道字符串的结尾由空字符表示,但我无法理解以下代码的输出. #include #include 整数主要(无效){char s[] = "你好\0你好";printf("%d %d", strlen(s), sizeof(s));} 输出:5 9 如果 strlen() 在 o 的末尾检测到字符串的结尾,那么为什么 sizeof() 不做同样的事情呢?即使它不做同样的事情,不是 '\0
..
A 评论 对我的一个答案让我有点困惑.当试图计算将两个字符串连接到一个新的内存块需要多少内存时,据说使用 snprintf 优于 strlen,如下图: size_t length = snprintf(0, 0, "%s%s", str1, str2);//优先于:size_t 长度 = strlen(str1) + strlen(str2); 我可以在这背后得到一些推理吗?有什么优势,如果
..
如果程序中的字符串超过9个字符,我应该不会出错? //CString.c//2.22.11#include#include#include主要的(){char * aString = calloc(10,sizeof(char));如果(aString == NULL){返回1;}printf(“请输入一个单词:");scanf(“
..
我使用fgets读取了一个字符串.它可以正确打印,但是如果我尝试使用strlen或一会儿直到NULL来输出长度,它将返回一个错误的值.fgets不会以NULL结尾字符串吗? 字符字[256];fgets(word,sizeof(word),stdin);while(单词[i])i ++;printf(“%d",i); 对于字符串aba,它输出40. 解决方案 函数 fgets 还在字
..
有人可以解释为什么我在使用以下g ++编译器编译源代码时出现此错误 #include#include使用命名空间std;int main(){char source_language [50];scanf(“%16s \ n",source_language);int长度= sizeof(source_language);int sizeofchar = s
..