我對 C 很陌生,所以如果這是一個直截了當的問題,我深表歉意,但我似乎找不到我的錯誤。我的代碼如下
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* makeString(char character,int count)
{
int i;
char* finalString=malloc(count 1);
for(i=1;i<=count;i )
{
finalString[i]=character;
}
finalString[count]=0;
return finalString;
}
int main()
{
char* string=makeString('*',5);
printf("%s\n",string);
}
我正在嘗試獲取 finalString 的輸出,該輸出將是“字符”、“計數”的次數。我沒有收到任何錯誤或警告,但它沒有生成任何輸出。除錯時,它會成功運行回圈,但不會將任何字符存盤到 finalString 中。任何幫助表示贊賞。
uj5u.com熱心網友回復:
與許多編程語言一樣,C 使用從 0 開始的陣列索引。字符陣列的第一個元素finalString是finalString[0],不是finalString[1]。
您的for回圈應該從0to 開始count - 1,而不是 from 1to count。該行:
for(i = 1; i <= count; i )
應該改為:
for(i = 0; i < count; i )
正如您現在的代碼一樣,您有未定義的行為,因為您嘗試 print finalString[0],這是未初始化的。在這種情況下,它似乎是0( '\0')。
我忽略了makeString缺少close 的事實},因為你說它編譯正確,我認為這是一個粘貼錯誤。
uj5u.com熱心網友回復:
C 中的陣列從 0 開始,即第一個元素是 finalString[0]。
由于您沒有設定它,它包含垃圾,并且很可能是一個立即結束字串的 NUL。
你的回圈應該看起來像
for(i=0;i<count;i )
...
等等。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/516503.html
標籤:C细绳功能字符返回
下一篇:從輸入中翻譯Unicode字符
