Tag: strcpy

比较两个字符串,strcmp的问题

我正在尝试检查从stdin读取的行是否以“login:”开头,但strcmp似乎不起作用。 char s1[20], s2[20]; fgets(s1, 20, stdin); strncpy(s2,s1,6); strcmp(s2, “login:”); if( strcmp(s2, “login:”) == 0) printf(“s2 = \”login:\”\n”); else printf(“s2 != \”login:\”\n”); 我不关心“login:”之后会发生什么,我只是想确定命令是如何给出的。 我究竟做错了什么?

__strcpy_sse2_unaligned with -fno-builtin

我正在调试我的程序,然后最后一行发生了,我该如何解决? 我使用-fno-builtin来查看strcpy()但它显示__strcpy_sse2_unaligned被调用。 root@19:~/booksrc# gcc -fno-builtin -g char_array2.c root@19:~/booksrc# gdb -q ./a.out Reading symbols from ./a.out…done. (gdb) list 1 #include 2 #include 3 4 int main() { 5 char str_a[20]; 6 7 strcpy(str_a, “Hello World!\n”); 8 printf(str_a); 9 } (gdb) break 6 Breakpoint 1 at 0x708: file char_array2.c, line 6. (gdb) break strcpy Breakpoint 2 at […]

strcpy和printf一个多维char数组C.

说我有一个arrays char messages[10][2][50]; strcpy的正确语法是什么,以便将数据放入其中一个字符串(大多数为50的内部字符数组),然后通过%s将其提供给printf的相应约定? 就此而言,我是否以正确的顺序声明了数组下标? 它是10批,成对(2)字符串。 每个字符串宽50个字符。 01{{50 chars},{50 chars}} 02{{50 chars},{50 chars}} … 09{{50 chars},{50 chars}} 10{{50 chars},{50 chars}} 各种互联网资源似乎与哪些下标省略冲突,无论我尝试什么似乎都会产生意想不到的结果。 你可以填写下面的空白吗? strcpy(message???, “Message 1 Part 1”); strcpy(message???, “m1 p2”); strcpy(message???, “m2 p1”); strcpy(message???, “m2 p2”); strcpy(message???, “m3 p1”); strcpy(message???, “m3 p1”); //So on… int i; for(i=0;i<10;i++) printf("%s, %s\n", message???, message???); 这样arrays具有并保持的结构: 01{{“Message 1 Part […]

strcpy在ios​​7上表现不同

IOS7似乎带有字符串strcpy的新实现(可能是优化)。 之前我能够从数组的任何位置复制字符串,但现在如果我从任何位置开始复制(i%4!= 0)它将崩溃。 为了显示这一点,我在iOS6和7中都运行了这个代码,它在7上崩溃了应用程序: char *x = malloc(1024); strcpy(x, “hello world”); char *x2 = x + 1; strcpy(x, x2); 我究竟做错了什么?

strcpy字符串数组

char copy, array[20] printf(“enter …”): scanf(“%s”, array); if (strlen(array) > 20 ) { strcpy(copy, array….); 如果输入超过20个字符,我需要做什么才能使它只抓取前20个字符

为什么在遗留strcpy()中没有健全性检查

以下是传统系统中最流行的strcpy实现。 为什么在开始时没有检查dest和src是否为NULL? 我曾经听说过,在过去,记忆力有限,所以短代码总是首选。 你现在可以在开始时用NULL指针检查实现strcpy和其他类似的函数吗? 为什么不? char *strcpy(char *dest, const char *src) { char *save = dest; while(*dest++ = *src++); return save; }

strcpy()和字符串数组

我需要将用户的输入存储到字符串数组中。 #include #include #include char *history[10] = {0}; int main (void) { char input[256]; input = “input”; strcpy(history[0], input); return (EXIT_SUCCESS); } 在终端上运行它我得到一个分段错误,在NetBeans中我得到main.c:11:错误:赋值中不兼容的类型。 我还尝试将所有历史记录移动到最新输入到第一个位置(历史[0])。 history[9] = history[8]; history[8] = history[7]; history[7] = history[6]; history[6] = history[5]; history[5] = history[4]; history[4] = history[3]; history[3] = history[2]; history[2] = history[1]; history[1] = history[0]; history[0] = input; 但这导致这样的输出。 […]

C中的“中止陷阱:6”错误?

我是C的初学者,但我在终端上通过gcc在xcode上运行此代码: #include #include int main(){ char name[12] = “Roman Mirov”; printf(“My name is %s\n”, name); name[8] = ‘k’; printf(“My name is %s\n”, name); char greeting[] = “hello”; printf(“%s %s\n”, greeting, name); strcpy(greeting, “greetings, “); printf(“%s%s\n”, greeting, name); return 0; } 它输出这个: My name is Roman Mirov My name is Roman Mikov hello Roman Mikov Abort […]

strcpy_s如何工作?

众所周知,strcpy_s是strcpy的安全版本。 但我想知道它是如何工作的…… 让我们看一些例子。 strpy_s的声明: errno_t strcpy_s(_CHAR * _DEST,size_t _SIZE,const _CHAR * _SRC) [点拨 char dest[5]; char* src = “abcdefg”; strcpy_s(dest,5,src); 它将返回一个断言。 我想我能理解这一点,使用_SIZE确保我们不能复制比_SIZE更多的字符 但是……我无法理解这一点: char dest[5]; char* src = “abcdefg”; strcpy_s(dest,10,src); 我们仍然可以得到一个断言,那是怎么发生的? ps,错误是: 调试断言失败 表达式:(L“缓冲区太小”&& 0) 在VS2013中 strcpy_s会检查其体内dest的大小吗? 如果这是真的,怎么样? 如何检查像_DEST这样的指针?

如何修复strcpy以便检测重叠的字符串

在一次采访中,我被要求编写strcpy的实现,然后修复它以便正确处理重叠的字符串。 我的实现在下面,它是非常天真的..我如何修复它,以便a)它检测重叠的字符串和b)检测后..我们如何处理重叠并继续? char* my_strcpy(char *a, char *b){ if(a == NULL || b == NULL){ return NULL; } if(a > b){ //we have an overlap? return NULL; } char *n = a; while(*b != ‘\0’){ *a = *b; a++; b++; } *a = ‘\0’; return n; } int main(int argc, char *argv[]) { char str1[] = […]