我用 ANSI C 编写了一个程序来删除字符串前面和结尾的双引号,所以"Hello, world"
会变成Hello, world
:
代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* removeQuotes(char str[]) {
int i = 1;
int len = strlen(str) - 2;
char * tmp = (char*) malloc (sizeof(char) * len);
for (;i<=len;++i ) {
tmp[i-1] = str[i];
}
return tmp;
}
int main(void) {
char str[] = "Hello, world";
char * abc = removeQuotes(str);
printf("Inside the quotes is: %s length: %d\n"
"Original is: %s length: %d", abc, strlen(abc), str, strlen(str));
return 0;
}
在 IDEOne (http://ideone.com/Iybuk) 我得到了正确的答案。但是 GCC 给了我一些奇怪的东西:
U→┬↓ length: 22es is: ello, worlESSOR_↑
Original is: Hello, world length: 12
仅当字符串包含空格时才会发生。它适用于“Helloworld”或类似的东西。有什么可靠的方法让它正常工作吗?