2016-04-26 63 views
1

我怎么能从一个datagenerator datapoint*25+65是单个字符像一个,但我想在str = abcdefg(无所谓重要哪些字母)? datapoint创建一个介于0.0和1.0之间的值。 节目单charakters:ascii代码在char字符串

char str; 
for(int n; n<60; n++) 
{ 
    str=datapoint*25+65; 
    str++; 
} 
str = '/0'; 

的问题,我不知道如何使用此设置来获得一个字符的字符串像像在海峡ABCD,而不是只有一个字母。

+1

一个'char'类型的变量存储一个字符只要。在'char str'中,你不能存储''abcdefg'''甚至''ab'',但只能存储''a'',(注意不同的引号)。 – alk

+2

也许你想要一个* char *的数组。 –

回答

2

尝试这种情况:

char str[60 + 1]; /* Make target LARGE enough. */ 
char * p = str; /* Get at pointer to the target's 1st element. */ 
for(int n = 0; /* INITIALISE counter. */ 
    n<60; 
    n++) 
{ 
    *p = datapoint*25+65; /* Store value by DE-referencing the pointer before 
         assigning the value to where it points. */ 
    p++; /* Increment pointer to point to next element in target. */ 
} 
*p = '\0'; /* Apply `0`-terminator using octal notation, 
       mind the angle of the slash! */ 

puts(str); /* Print the result to the console, note that it might (partly) be 
       unprintable, depending on the value of datapoint. */ 

而不指针当前元素替代的方法,但使用索引:

char str[60 + 1]; /* Make target LARGE enough. */ 
for(int n = 0; /* INITIALISE counter. */ 
    n<60; 
    n++) 
{ 
    str[n] = datapoint*25+65; /* Store value to the n-th element. */ 
} 
str[n] = '\0'; /* Apply `0`-terminator using octal notation, 
        mind the angle of the slash! */ 
+0

感谢您的帮助忘记了n = 0在这里,我没有指针的程序,所以我的整个程序没有得到复制:D – Andreas

+0

我的意思是复杂的命中错误的按钮 – Andreas

0

你必须明白,因为你正在使用字符,所以你一次只能存储一个字符。如果要存储多个字符,请使用字符串类或c字符串(字符数组)。另外,确保你初始化str和n的值。例如:

str = 'a'; 
n = 0; 
+0

'str ='a'是什么意思? – alk

+0

C中没有“字符串类” –

1
char str; 
/* should be char str[61] if you wish to have 60 chars 
* alternatively you can have char *str 
* then do str=malloc(61*sizeof(*str)); 
*/ 

for(int n; n<60; n++) 
/* n not initialized -> should be initialized to 0, 
* I guess you wish to have 60 chars 
*/ 
{ 
    *(str+n)=datapoint*25+65; 
/* alternative you can have str[n]=datapoint*25+65; 
* remember datapoint is float 
* the max value of data*25+65 is 90 which is the ASCII correspondent for 
* letter 'Z' ie when datapoint is 1.0 

* It is upto you how you randomize datapoint. 
*/ 
} 
str[60] = '\0'; // Null terminating the string. 
/* if you have used malloc 
* you may do free(str) at the end of main() 
*/