相关疑难解决方法(0)

C中的字符串文字中的forbiddens

在K&R书籍第104页,我发现了这句话:

char amessage[] = "now is the time"; //an array
char *pmessage = "now is the time";  //a pointer
Run Code Online (Sandbox Code Playgroud)

可以更改阵列中的各个字符,但amessage 始终引用相同的存储.pmessage随后可以将指针修改为指向其他位置,但如果您尝试修改字符串内容,结果将是未定义的...

那么,这是他们在两种情况下的错误吗?

对于阵列,

amessage[] = "allocate to another address"; //wrong?
Run Code Online (Sandbox Code Playgroud)

对于指针,

pmessage[0] = 'n'; //wrong?
Run Code Online (Sandbox Code Playgroud)

我只是想知道什么时候违反这些规则.

谢谢.

c

3
推荐指数
1
解决办法
386
查看次数

'reverse_string'函数的冲突类型

我正在使用这个SO问题作为需要反转字符串的程序的一部分.我遇到的问题是我似乎无法使功能发挥作用.这是我的代码:

int main(int argc, char *argv[]){
  char *test = "Testing";
  fputs(test, stdout);
  fputs(reverse_string(test), stdout);
}

char* reverse_string(char *str){
  char temp;
  size_t len = strlen(str) - 1;
  size_t i;
  size_t k = len;
  for(i = 0; i < (len +1)/2; i++){
    temp = str[k];
    str[k] = str[i];
    str[i] = temp;
    k--;
  }  
  return str;
}
Run Code Online (Sandbox Code Playgroud)

我收到了一个错误 conflicting types for 'reverse_string'

编辑:对于任何想知道这里的人来说,代码是有效的.请参阅@ chux的答案以获得解释.

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
char* reverse_string(char *str){
  char temp;
  size_t len = strlen(str) - 1; …
Run Code Online (Sandbox Code Playgroud)

c string

3
推荐指数
1
解决办法
719
查看次数

标签 统计

c ×2

string ×1