相关疑难解决方法(0)

C:STRTOK例外

出于某种原因,我在第一次使用strtok()时得到一个异常我想要完成的是一个函数,它只是检查子串在字符串中是否重复.但到目前为止我还没有开始工作

int CheckDoubleInput(char* input){
char* word = NULL;
char cutBy[] = ",_";

word = strtok(input, cutBy);  <--- **error line**

/* walk through other tokens */
while (word != NULL)
{
    printf(" %s\n", word);
    word = strtok(NULL, cutBy);
}
return 1;
}
Run Code Online (Sandbox Code Playgroud)

和主要调用功能:

CheckDoubleInput("asdlakm,_asdasd,_sdasd,asdas_sas");
Run Code Online (Sandbox Code Playgroud)

我得到的错误的屏幕截图

c string strtok

6
推荐指数
1
解决办法
1123
查看次数

C++:返回C字符串的最快方法

我有一个简单的函数,它接受一个字符串并返回一个字符串,在C中它看起来像;

char* get_string(char c) {
  switch(c) {
    case 'A': return "some string";
    Case 'B': return "some other string";
...
Run Code Online (Sandbox Code Playgroud)

并且它工作正常,但后来我希望我的代码在C++中工作,而C++编译器会抛出一个gamillions"从字符串常量转换为'char*'".我理解这个警告,但我不能100%确定实现该功能的最佳方法是什么,因此它可以快速地在C和C++上工作.这个函数被大量调用,它是一个重要的瓶颈,所以它必须很快.我最好的尝试是;

char* get_string(char c) {
  char* str = (char*)malloc(50);
  switch(c) {
    case 'A':
      sprintf(str, "some string");
      return str;
    Case 'B':
      sprintf(str, "some other string");
      return str;
...
Run Code Online (Sandbox Code Playgroud)

c c++ performance

5
推荐指数
2
解决办法
9654
查看次数

表达式必须是可修改的左值(字符数组)

我将结构定义为:

struct taxPayer{
  char name[25];
  long int socialSecNum;
  float taxRate;
  float income;
  float taxes; 
};
Run Code Online (Sandbox Code Playgroud)

我的主要功能包括:

taxPayer citizen1, citizen2;

citizen1.name = "Tim McGuiness";
citizen1.socialSecNum = 255871234;
citizen1.taxRate = 0.35;

citizen2.name = "John Kane";
citizen2.socialSecNum = 278990582;
citizen2.taxRate = 0.29;
Run Code Online (Sandbox Code Playgroud)

编译给我一个错误(C3863 数组类型char[25]不可分配,表达式必须是一个可修改的左值) oncitizen1.name = "Tim McGuiness";以及 oncitzen2.name = "John Kane";

如何删除此错误并设置citizen1.name为一个名称和citizen2.name一个不同的名称?

c++ struct lvalue

5
推荐指数
1
解决办法
1万
查看次数

Strdup()和strcpy

void x( )
{
    strcpy(a, strdup(p) );
}
Run Code Online (Sandbox Code Playgroud)

(错误)使用strdup进行分配,strcpy不会释放它

谁能告诉我上面的陈述有什么问题以及为什么我会收到这个错误?

c c++

4
推荐指数
1
解决办法
2万
查看次数

转换const char*到char*的问题

int A(const char* name){     
    name = "Here you GO!";    
    char* new_name;      
    //strcpy(new_name,name);      
    new_name = const_cast<char *>(name);      
    printf("%s\n", new_name);      
    return 0;    
}
Run Code Online (Sandbox Code Playgroud)

这是我正在测试的源代码.

一个问题是,当我使用时const_cast<char *>,它说它是未声明的.(我知道它可以在'g ++'编译下工作)另一个问题是当我尝试strcpy将它们组合在一起时,它会弹出分段错误.前提是我必须gcc whatevername.c -std=c99用来编译.

有人提出一些建议如何解决这个问题.非常感谢..

c const char

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

使用 fgets() 和 strtok() 在 C 中逐行读取文件?

我正在尝试使用 fgets 和 strtok() 逐行读取文件,并创建每个不同信息行的链接列表。

现在,我只是将信息放入一个数组中,只是想弄清楚如何正确读取信息,但它无法正常工作。

在 while(fgets) 部分,它似乎将所有内容正确加载到数组中,并将其打印出来。但是,在执行该循环并尝试打印出整个数组之后,我得到了非常奇怪的结果.. 这主要是最后一行的大部分内容,并且大部分都不是完整的单词或任何内容。

例如,如果我正在阅读:

Simpson, Homer, Male, 1976
Simpson, Marge, Female, 1978
Simpson, Bart, Male, 2002 
Simpson, Lisa, Female, 2004 
Simpson, Maggie, Female, 2011 
Run Code Online (Sandbox Code Playgroud)

我最后得到的打印输出是这样的:

le
Simpson
 Maggie


Simpson
 Maggie
e
ale
Simpson
 Maggie
e
e
Simpson
 Maggie
 Female
 2011
Run Code Online (Sandbox Code Playgroud)

请让我知道我要去哪里错了,谢谢!

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXSTRINGSIZE 10
#define LINESIZE 128

struct person{
    char firstName[MAXSTRINGSIZE];
    char lastName[MAXSTRINGSIZE];
    char gender[MAXSTRINGSIZE];
    int birthYear;
    struct person *next;
} *first, *current;


int main (void){
    static …
Run Code Online (Sandbox Code Playgroud)

c fgets strtok

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

结束后可以保存(和使用)传递给函数的char *文字吗?

我试图将文字传递给函数,将其分配给struct并在以后使用。我是否需要malloc()strcpy(),或者可以保存char*以后使用(它是否静态分配)?

简约示例代码如下:

struct data {
    char *string;
    ...;
}
Run Code Online (Sandbox Code Playgroud)
struct data *create_data(char *input_string, ...) {
    struct data *result = malloc(sizeof(struct data));
    result->string = input_string;
    return result;
}

struct data *string = create_data("Hey", ...);
printf("%s", data->string);
Run Code Online (Sandbox Code Playgroud)

要么

struct data *create_data(char *input_string, ...) {
    struct data *result = malloc(sizeof(struct data));
    result->string = malloc(sizeof(input_string));
    strcpy(result->string, input_string);
    return result;
}

struct data *string = create_data("Hey",...);
printf("%s", data->string);

Run Code Online (Sandbox Code Playgroud)

我是否可以期望第一个工作,以使内存中的数据不会被覆盖,或者假设这样做是不安全的?

c

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

当我使用strtok()时,有没有办法挑出个别令牌?

如果我有一个字符串:Hi:my:name:is:lacrosse1991:我怎么能strtok用来检索is(换句话说第四个字段)?这将类似于你在bash中使用cut的方式,我会这样做cut -d ":" -f 4.如果这是一个错误的功能做这样的事情,请让我知道,任何帮助非常感谢,谢谢!(我刚刚开始自学C语言,如果这些是我要求的明显问题,我会提前道歉)

这是我将使用的剪切命令的示例

x=$(echo "$death" | cut -d ':' -f 4)
y=$(echo "$death" | cut -d ':' -f 5)
z=$(echo "$death" | cut -d ':' -f 6)
Run Code Online (Sandbox Code Playgroud)

c strtok

2
推荐指数
1
解决办法
490
查看次数

C中的char*str ="this is a string"来自char*str = strdup("this is a string")之间的差异是什么?

以下代码之间的区别是什么:

char* str = "this is a string"

从这一个:

char* str = strdup("this is a string")

使用场景?

c

2
推荐指数
1
解决办法
107
查看次数

在C中,无法释放并为char指针分配NULL

在下面,我试图在使用malloc()分配的内存后释放并对char*进行NULL化.请帮我确定根本原因.

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main() {

   char *str1="hello world";
   char *str2=malloc((strlen(str1)+1) * sizeof(char));

   str2=str1;
   printf("%s",str2);

   free(str2);
   str2=NULL;
}
Run Code Online (Sandbox Code Playgroud)

-

错误是:

Segmentation fault (core dumped)
Run Code Online (Sandbox Code Playgroud)

c malloc segmentation-fault

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

标签 统计

c ×9

c++ ×3

strtok ×3

char ×1

const ×1

fgets ×1

lvalue ×1

malloc ×1

performance ×1

segmentation-fault ×1

string ×1

struct ×1